我有一个第 3 方开发的大型复杂应用程序,充满了 java.util.logging.Logger#finer()
调用。
通常我使用 log4j 和 sl4j 进行日志记录,我对 java.util.logging 了解不多,更不了解所有配置细节和可能性。
关于“java.util.logging”的每一个谷歌都指向关于流处理程序、格式化程序、级别的完整解释。每个人都认为我真的很关心所有这些东西(实际上这是一个合理的假设)。但我一点也不在乎。
我对按文件分离日志或文件轮换、压缩、电子邮件、远程日志等并不真正感兴趣。我也不关心日志级别和消息格式的刺激。
我想做的就是运行这个应用程序,并将所有可用的日志消息输出到标准输出。
有没有简单直接的方法可以做到这一点?
类似于 jvmargs -Djava.util.logging.level=FINEST -Djava.util.logging.to=stdout
。
或者也许一些简单的文件被放入类路径中的某个位置?
最佳答案
All I want to do is to run this application with all available log messages spitting to stdout
不要在生产中这样做,但这是一种快速、简单、hacky 的方式:
编辑位于 java/conf
中的 logging.properties 文件。例如。/usr/lib/jvm/default-java/conf/logging.properties
该文件设置为将 ConsoleHandler 附加到根记录器,这就是您想要执行的操作。您只需调整级别即可查看输出。这是一个全局性的变化,所以请注意。
编辑该文件并:
- 更改
.level= INFO
->.level=ALL
- 将
java.util.logging.ConsoleHandler.level = INFO
更改为java.util.logging.ConsoleHandler.level = ALL
- 保存更改并重新启动您的应用。
推荐方式:
大多数 JVM 不在您的控制范围内(生产/开发服务器),因此您可以将该文件复制到您拥有的位置并使用 java.util.logging.config.file
系统属性。
例如-Djava.util.logging.config.file=/home/myuser/myapp/logging.properties
这样您就可以自由地对您的程序进行本地更改,而不是对机器进行全局更改。
关于java - 配置 `java.util.logging`最简单的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73223813/