更改PDFBox日志记录级别

时间:2014-07-10 17:26:50

标签: java eclipse logging log4j pdfbox

我目前正在尝试并且未能降低我在java项目中使用的PDFBox 1.8.6库的日志记录级别。基于this previous question,我在/ src /目录中有以下log4j.properties文件。

log4j.rootLogger=ERROR, stdout

log4j.logger.org.apache.pdfbox=ERROR

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %-5p [%c{2}]: %m%n

我不确定我还缺少什么,因为我仍然在控制台中收到如下消息的垃圾邮件。

Jul 10, 2014 10:19:23 AM org.apache.pdfbox.pdfparser.PDFParser parseXrefTable
WARNING: Count in xref table is 0 at offset 223265
Jul 10, 2014 10:19:23 AM org.apache.pdfbox.pdfparser.PDFParser parseXrefTable
WARNING: Count in xref table is 0 at offset 223265
Jul 10, 2014 10:19:23 AM org.apache.pdfbox.pdfparser.PDFParser parseXrefTable
WARNING: Count in xref table is 0 at offset 223265

如果有办法以编程方式更改日志级别,我根本没有附加到属性文件,因为我没有在其他任何地方使用log4j。我根本不知道它是否甚至使用了log4j.properties文件。我正在使用Eclipse,我不确定如何确认log4j.properties文件是否按预期在类路径上。

2 个答案:

答案 0 :(得分:1)

log4j.properties文件应与.class文件位于同一文件夹中。现在它似乎没有被加载。您已在第一行中正确设置了日志记录级别:

log4j.rootLogger=ERROR, stdout

这应该将log4j中的根记录器设置为使用ERROR日志记录级别,这意味着它只显示严重性为ERROR或更高级别的日志记录消息。

此外,如果您只想影响PDFBox,并且您知道库的软件包,则可以通过在属性文件中添加以下内容来有选择地设置软件包的日志记录级别:

log4j.logger.com.thepackage.of.pdfbox=ERROR

答案 1 :(得分:1)

在我弄明白之前,我遇到了同样的问题。

PDFBox 1.8.6库并没有直接使用Log4j。相反,它使用Apache Commons Logging Framework(http://commons.apache.org/proper/commons-logging/guide.html)。

commons日志记录框架拥有自己的属性文件来配置日志记录,如果它位于类路径上,则仅使用log4j作为后备。

要解决此问题,您可以将apache commons日志记录配置为忽略它,或者将log4j添加到类路径中。我在这里找到了一些说明,但我无法让他们工作(http://cyntech.wordpress.com/2009/01/09/how-to-use-commons-logging/

我最终做的是将log4j.jar添加到我的类路径中,然后上面的说明(在类路径中添加log4j.properties文件,内容为log4j.rootLogger = ERROR,stdout)最终有效。