自定义java.util.logging属性文件导致重复的日志文件

时间:2014-11-11 17:20:59

标签: logging jenkins java.util.logging winstone

我正在运行从WAR文件启动的独立Jenkins服务器。 Jenkins宣称自己使用java.util.logging框架进行日志记录。我按如下方式启动它:

java -Djava.util.logging.config.file=mycustomlogging.properties -jar jenkins.war > jenkins.log

mycustomlogging.properties包含以下内容:

handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=WARNING
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

我期望所有日志记录进入jenkins.log以及仅记录WARNING消息及以上日志。

jenkins.log的内容与预期的一样,但我也看到创建了一个文件〜/ java0.log,其中包含INFO及以上的XML格式的日志语句。

为什么在mycustomlogging.properties中只指定ConsoleHandler(并且没有FileHandler)时会创建java0.log?

我的属性文件是否与默认系统文件“合并”,后者(可能)将FileHandler配置为〜/ java0.log?我的期望是指定自定义属性文件将完全覆盖默认的系统行为。

或者是否可能编写服务器代码使其忽略系统属性并只记录到〜/ java0.log“无论如何”?

如果重要,我使用的是Java X 10.10。

1 个答案:

答案 0 :(得分:0)

  

为什么在mycustomlogging.properties中只指定ConsoleHandler(并且没有FileHandler)时会创建java0.log?

可能从未找到您的属性文件,或者执行LogManager.reset()或LogManager.readConfiguration(InputStream)的代码抛出了配置。

  

我的属性文件是"合并"使用默认系统one,(可能)将FileHandler配置为〜/ java0.log?

使用默认LogManager无法合并。必须有直接创建和添加FileHandler的代码。

  

或者是否可能编写服务器代码使其忽略系统属性并只记录到〜/ java0.log"无论什么"?

是。 LogManager.reset将丢弃您的配置。

尝试配置Groovy Hook Script以调用LogManager.reset(),然后安装ConsoleHandler。这在Jenkins logging wiki

中有所描述