禁用PDFBox上的日志记录

我们正在使用PDFBox进行一些PDF阅读和操作。 但在解析过程中,我得到了一堆像这样的消息:

Changing font on  from  to the default font 

现在我该怎么禁用这些? 因为如果嵌入了字体并且日志文件变得非常不可用,则在输入的每个字符上输出这样的消息。

现在更改整体日志级别不是一个选项,因为我需要来自其他组件的语句。

我使用的是Tomcat 5.5,log4j 1.2.16和pdfbox-app 1.6.0

这是我的log4j配置文件:

 # Root logger option log4j.rootLogger=INFO, file, stdout # Direct log messages to a log file log4j.appender.file=org.apache.log4j.DailyRollingFileAppender #log4j.appender.file.File=/home/PDF/WS/PDF.log log4j.appender.file.File=C:\\loging.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %-5p [%c{2}]: %m%n # 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 

编辑

修改我的log4j文件后,它的外观如下:

 # Root logger option log4j.rootLogger=INFO, file, stdout log4j.rootLogger.org.apache.pdfbox=ERROR # Direct log messages to a log file log4j.appender.file=org.apache.log4j.DailyRollingFileAppender #log4j.appender.file.File=/home/PDF/WS/PDF.log log4j.appender.file.File=C:\\loging.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %-5p [%c{2}]: %m%n # 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 

无论我把log4j.rootLogger.org.apache.pdfbox=ERROR行放在哪里,错误仍然会在日志文件中弹出如下:

 2012-07-16 15:36:46,652 WARN [font.PDSimpleFont]: Changing font on  from  to the default font 2012-07-16 15:36:46,652 WARN [font.PDSimpleFont]: Changing font on  from  to the default font 2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on  from  to the default font 2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on  from  to the default font 2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on  from  to the default font 2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on  from  to the default font 2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on  from  to the default font 2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on 

from to the default font

编辑2

在咨询log4j之后:特定于包的日志记录,我发现了正确的语法:

 log4j.logger.org.apache.pdfbox=ERROR 

pdfbox会像你之前说的那样记录错误,如果你将以下行添加到log4j.properties它应该清理的东西

 log4j.rootLogger.org.apache.pdfbox.pdmodel.font.PDFont=fatal 

禁用所有日志记录的简单方法:

 java.util.logging.Logger .getLogger("org.apache.pdfbox").setLevel(java.util.logging.Level.OFF); 

或者,如果您只想看到严重的消息:

 java.util.logging.Logger .getLogger("org.apache.pdfbox").setLevel(java.util.logging.Level.SEVERE); 

这对我有用: – 请注意,有这样的答案适用于此类的多个问题,我已被要求将事情标记为重复。 所以,如果有人找到时间 – 只需继续合并……

  // you might want to switch off logging here to improve performance String[] loggers = { "org.apache.pdfbox.util.PDFStreamEngine", "org.apache.pdfbox.pdmodel.font.PDSimpleFont", "org.apache.pdfbox.pdmodel.font.PDFont", "org.apache.pdfbox.pdmodel.font.FontManager", "org.apache.pdfbox.pdfparser.PDFObjectStreamParser" }; for (String logger : loggers) { org.apache.log4j.Logger logpdfengine = org.apache.log4j.Logger .getLogger(logger); logpdfengine.setLevel(org.apache.log4j.Level.OFF); }