如何将java.util.logging重定向到文件?

gul*_*ndr 6 java redirect file java.util.logging

我有一个使用外部库的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
Run Code Online (Sandbox Code Playgroud)

该文件初始化为:

System.setProperty("java.util.logging.config.file", "logging.properties");
Run Code Online (Sandbox Code Playgroud)

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

感谢您的时间.

JOT*_*OTN 12

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

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); 
Run Code Online (Sandbox Code Playgroud)

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