【问题标题】:How to redirect java.util.logging to a file?如何将 java.util.logging 重定向到文件?
【发布时间】:2010-11-27 16:24:04
【问题描述】:

我有一个使用外部库的 java 程序。主程序使用log4j 记录其消息,库使用java.util.logging

我的问题是来自外部库和主程序的日志消息混合在控制台中。

我想将所有日志消息从外部库重定向到一个文件。我尝试使用logging.properties 文件来做到这一点:

handlers= java.util.logging.FileHandler
.level= INFO
java.util.logging.FileHandler.pattern = foo.log
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

这个文件被初始化为:

System.setProperty("java.util.logging.config.file", "logging.properties");

不幸的是,来自外部库的日志消息不断出现在控制台中。 我应该使用slf4j 之类的东西来拦截来自java.util.logging 的日志消息吗?

感谢您的宝贵时间。

【问题讨论】:

标签: java file redirect java.util.logging


【解决方案1】:

这是我的一个程序中的一些代码。这也会自动旋转。配置类是我自己的,从属性文件中读取。您可以将其替换为您自己的值。

Logger rootLogger = Logger.getLogger(""); 
logHandler = new FileHandler(config.getLogFile(), 
                             config.getLogRotateSize()*1024*1024, 
                             config.getLogRotateCount(), false); 
logHandler.setFormatter(new SimpleFormatter()); 
logHandler.setLevel(Level.INFO); 
rootLogger.removeHandler(rootLogger.getHandlers()[0]); 
rootLogger.setLevel(Level.INFO); 
rootLogger.addHandler(logHandler); 

请注意,这是针对独立程序的。任何应用服务器都有它自己的日志配置工具。如果需要动态调试模式,该程序还可以动态更改格式化程序和级别。

【讨论】:

    猜你喜欢
    • 2017-10-20
    • 2020-04-23
    • 2014-09-30
    • 2013-04-12
    • 2014-12-06
    • 2015-03-10
    • 1970-01-01
    • 2023-03-03
    • 2023-03-06
    相关资源
    最近更新 更多