2012-07-13 176 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