我正在运行从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。
答案 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。
中有所描述