调整 apache 共享资源日志记录的日志记录级别?

我有一个简单的控制台应用程序,它使用apache的PDFBox库,而PDFBox库又使用共享资源日志记录。我在控制台中收到了很多垃圾邮件,我想禁止显示这些消息:

2011 年 2 月 15 日下午 3:56:40 org.apache.pdfbox.util.PDFStreamEngine processOperator INFO: 不支持/禁用操作: 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);

尽管进行了这些设置,但消息仍会显示在控制台上。从共享资源日志记录中检索日志对象也没有帮助,因为它似乎没有办法设置级别。

有没有办法以编程方式抑制这些消息?还是我需要添加配置文件?


答案 1

Commons-logging只是一个loging-façade,这意味着它不提供将logdata实际写入磁盘的代码。您需要更改的是实际日志记录实现的配置(例如 、 等)。如果未找到此类库,则默认为 。logbacklog4jjava.util.logging

我建议将log4j放在类路径中,并在类路径中添加log4j.xml配置文件。在这种情况下,类路径中仅存在 就足以初始化它。Log4j也可以以编程方式配置。log4j


答案 2

这对我有用:

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);
}

推荐