我有一个使用外部库的java程序。主程序使用log4j
记录其消息并且库使用java.util.logging
.
我的问题是来自外部库和主程序的日志消息混合在控制台中。
我想重定向all将来自外部库的消息记录到文件中。我尝试这样做logging.properties
file:
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
?
感谢您的时间。
这是我的一个程序中的一些代码。这也实现了自动旋转。配置类是我自己的,是从属性文件中读取的。您可以将其替换为您自己的价值观。
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);
请注意,这是针对独立程序的。任何应用程序服务器都有自己的日志配置工具。如果需要动态调试模式,程序还可以动态更改格式化程序和级别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)