我有一个简单的控制台应用程序,它使用apache的PDFBox库,而后者又使用commons日志记录。我在控制台上收到了很多垃圾消息,我想要抑制它们:
2011年2月15日下午3:56:40 PM org.apache.pdfbox.util.PDFStreamEngine processOperator信息:不支持/禁用操作: EI
在我的代码中,我试图重置日志级别,但无济于事:
Logger.getLogger("org.apache.pdfbox.util.PDFStreamEngine").setLevel(Level.OFF);
Logger.getLogger("org.apache.pdfbox.util").setLevel(Level.OFF);
Logger.getLogger("org.apache.pdfbox").setLevel(Level.OFF);
尽管进行了这些设置,消息仍会显示在控制台上。从Commons日志中检索日志对象也无济于事,因为它似乎没有设置级别的方法。
有没有办法以编程方式抑制这些消息?或者我需要添加一个配置文件?
发布于 2011-02-16 05:27:28
Commons-logging只是一个logging-facade,这意味着它不会提供实际将日志数据写入磁盘的代码。您需要更改的是实际日志记录实现的配置(例如logback
、log4j
等)。如果找不到这样的库,则默认为java.util.logging
。
我建议将log4j放在类路径中,并在类路径中添加一个log4j.xml配置文件。在这种情况下,类路径中仅存在log4j
就足以对其进行初始化。也可以将Log4j配置为programmatically。
发布于 2015-06-28 02:15:58
这对我来说很有效:
String[] loggers = { "org.apache.pdfbox.util.PDFStreamEngine",
"org.apache.pdfbox.pdmodel.font.PDSimpleFont" };
for (String logger : loggers) {
org.apache.log4j.Logger logpdfengine = org.apache.log4j.Logger
.getLogger(logger);
logpdfengine.setLevel(org.apache.log4j.Level.OFF);
}
发布于 2011-02-16 05:28:45
Apache commons-logging在底层(java.util.logging
或Log4J)下使用了其他一些日志记录框架,您必须调查它在您的项目中使用了哪一个,并在那里设置了适当的日志记录级别。
https://stackoverflow.com/questions/5009658
复制相似问题