首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以编程方式获取java日志文件的位置?

以编程方式获取java日志文件的位置?
EN

Stack Overflow用户
提问于 2019-05-28 04:27:41
回答 1查看 0关注 0票数 0

我的应用程序在中创建一个java日志文件

代码语言:javascript
复制
$HOME/javaN.log

哪里N是整数。有时我的应用程序的几个实例运行,每个实例都创建一个名为的日志文件java1.logjava2.log等等。我需要知道在执行期间应用程序使用哪个日志文件。

有没有办法以编程方式确定日志文件的位置?

UPDATE

显然,一些看过这篇文章的人不知道Java的登录方式是如何运作的。让我澄清一下目前如何实施日志记录。我已将logging.properties文件中的记录器定义为com.xyz.foo。这就是logging.properties的外观:

代码语言:javascript
复制
handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level = WARNING

com.xyz.foo.level = FINEST

java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.level=FINEST
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%1$tY:%1$tm:%1$td %1$tH:%1$tM:%1$tS[%4$s] %2$s%n%5$s%n%6$s%n
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

这条线

代码语言:javascript
复制
java.util.logging.FileHandler.pattern = %h/java%u.log

将如上所述在用户的主文件夹中创建日志文件。

日志文件的创建和命名由Java框架在后台自动处理。如果另一个进程已经创建了日志文件,它还会自动解决可能的命名冲突,例如,如果java0.log存在,Logger则将创建java1.log为日志文件。

我知道如何显式设置日志文件,但是,我宁愿保留当前的日志记录机制,并获取Logger为日志文件选择的名称。

EN

回答 1

Stack Overflow用户

发布于 2019-05-28 13:44:12

您可以提前创建HashMap {“filename”:FileHandler},选择所需的名称并写入数据

代码语言:javascript
复制
public class TestLogging {

    private static Logger logger = Logger.getLogger(TestLogging.class.getName());


    public static void main(String[] args) throws IOException {

        HashMap<String, FileHandler> logMap = new HashMap<String, FileHandler>();

        logMap.put("a", new FileHandler("E:/work-java/wgx/ff//a.log"));
        logMap.put("b", new FileHandler("E:/work-java/wgx/ff//b.log"));


        aLog(logMap, "a");
//         aLog(logMap, "b");


    }

    private static void aLog(HashMap<String, FileHandler> logMap, String key) {
        logger.addHandler(logMap.get(key));
        logger.logp(Level.INFO, "TestLogging.class", "main", "logging");
    }
}
  • 但是Logger只能选择一个FileHandler

结果

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
<record>
  <date>2019-05-27T21:49:34</date>
  <millis>1558964974608</millis>
  <sequence>0</sequence>
  <logger>com.huifer.TestLogging</logger>
  <level>INFO</level>
  <class>TestLogging.class</class>
  <method>main</method>
  <thread>1</thread>
  <message>logging</message>
</record>
</log>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档