2012-07-13 137 views
9

我们使用PDFBox来执行一些PDF阅读和操作。但是在解析过程中,我收到了一堆这样的消息:在PDFBox上禁用日志记录

Changing font on <m> from <Arial Bold> to the default font 

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

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

我使用Tomcat 5.5,log4j的1.2.16和PDFBOX-应用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 <r> from <Arial Bold> to the default font 
2012-07-16 15:36:46,652 WARN [font.PDSimpleFont]: Changing font on <o> from <Arial Bold> to the default font 
2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on <c> from <Arial Bold> to the default font 
2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on <e> from <Arial Bold> to the default font 
2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on <s> from <Arial Bold> to the default font 
2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on <u> from <Arial Bold> to the default font 
2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on < > from <Arial Bold> to the default font 
2012-07-16 15:36:46,667 WARN [font.PDSimpleFont]: Changing font on <P> from <Arial Bold> to the default font 

EDIT 2

咨询log4j: package-specific logging后,我发现了正确的语法:

log4j.logger.org.apache.pdfbox=ERROR 
+1

见http://stackoverflow.com/questions/728295/creating-multiple-log-files-of-different-content-with-log4j的 – Kennet 2012-07-13 08:21:26

+0

可能重复[调整为Apache通用日志记录级别?( http://stackoverflow.com/que smissions/5009658/adjust-logging-level-for-apache-commons-logging) – 2015-07-06 13:43:03

+0

这个日志记录不仅令人烦恼,它还是一个主要的性能杀手... – 2015-07-06 13:46:05

回答

4

pdfbox确实像以前所述的很多登录错误,如果您将以下行添加到log4j.properties它应该清理事情

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

我接受了回答。这似乎并不奏效。错误仍然被记录。 – 2012-07-13 10:07:02

+0

如果你把'org.apache.pdfbox.pdmodel.font'错误/致命,它应该消失。这个软件包中有几个类可以提供像org.apache.pdfbox.pdmodel.font.PDFont这样的不需要的日志记录,但也可以使用org.apache.pdfbox.pdmodel.font.PDSimpleFont – 2012-07-13 10:44:58

+0

请查看问题的编辑。 – 2012-07-16 12:52:48

3

这适用于我: - 请注意,有这样的多个问题是这个答案适用,我已经被要求标记为重复的东西。所以,如果有人发现的时候了这一点 - 先走一步,合并......

// 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); 
     } 
+1

这对我来说也很好。无论出于什么原因,我不得不再添加一个到我的列表中:'org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap' – Jonathan 2016-03-25 12:06:15

4

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

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); 
+0

我建议你将“OFF”改为不太极端的东西,复制和粘贴新手没有看到消息,然后打开“它不工作”的问题。另见http://hitchhikers.wikia.com/wiki/Ravenous_Bugblatter_Beast_of_Traal – 2017-03-17 10:21:52

+0

@TilmanHausherr下次你看到这样的错误时,你可能会考虑自己修复它。编辑按钮出于某种原因。 – wvdz 2017-10-31 11:12:10

+0

@wvdz我知道,但是当某件事情是一个意见问题时,我会避免将这一点推向用户。 – 2017-10-31 11:21:25