我的应用程序在中创建一个java日志文件
$HOME/javaN.log
哪里N
是整数。有时我的应用程序的几个实例运行,每个实例都创建一个名为的日志文件java1.log
,java2.log
等等。我需要知道在执行期间应用程序使用哪个日志文件。
有没有办法以编程方式确定日志文件的位置?
UPDATE
显然,一些看过这篇文章的人不知道Java的登录方式是如何运作的。让我澄清一下目前如何实施日志记录。我已将logging.properties
文件中的记录器定义为com.xyz.foo
。这就是logging.properties的外观:
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
这条线
java.util.logging.FileHandler.pattern = %h/java%u.log
将如上所述在用户的主文件夹中创建日志文件。
日志文件的创建和命名由Java框架在后台自动处理。如果另一个进程已经创建了日志文件,它还会自动解决可能的命名冲突,例如,如果java0.log
存在,Logger
则将创建java1.log
为日志文件。
我知道如何显式设置日志文件,但是,我宁愿保留当前的日志记录机制,并获取Logger
为日志文件选择的名称。
发布于 2019-05-28 13:44:12
您可以提前创建HashMap {“filename”:FileHandler},选择所需的名称并写入数据
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");
}
}
<?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>
https://stackoverflow.com/questions/-100006830
复制相似问题