簡體   English   中英

如何禁用 PDFBox 警告日志記錄

[英]How to disable PDFBox warn logging

我有一個簡單的 java 控制台應用程序。 pdfbox 用於從 PDF 文件中提取文本。 但是控制台中打印了連續的信息:

十一月 29, 2017 9:28:27 下午 org.apache.pdfbox.pdmodel.font.PDSimpleFont toUnicode
警告: No Unicode mapping for 14 (145) in font GGNHDZ+SimSun  
十一月 29, 2017 9:28:27 下午 org.apache.pdfbox.pdmodel.font.PDSimpleFont toUnicode
警告: No Unicode mapping for 28 (249) in font LNKLJH+SimSun
十一月 29, 2017 9:28:27 下午 org.apache.pdfbox.pdmodel.font.PDSimpleFont toUnicode

我真的很想從控制台中刪除這些信息。 我使用 logback 進行日志記錄,logback.xml 就像:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<logger name="org.apache.pdfbox" level="ERROR"/>
<timestamp key="timestamp-by-second" datePattern="yyyyMMdd'T'HHmmss"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoder 默認配置為PatternLayoutEncoder -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>logs/test-${timestamp-by-second}.log</file>
    <append>true</append>
    <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n
        </pattern>
    </encoder>
</appender>
<root level="ERROR">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
</root>

我找到了一些答案說應該改變級別。 我已將級別更改為 ERROR。 但還是不行。 我懷疑該信息是否與 logback.xml 相關。 因為當我刪除 STDOUT 時,pdfbox 警告信息仍會打印在控制台中。

有人知道這個案子嗎? 先感謝您。

如果日志是由 Logback 發出的,那么您嘗試過的方法,例如......

  • 添加<logger name="org.apache.pdfbox" level="ERROR"/>
  • 刪除STDOUT附加程序

... 會工作。

但是,PDFBox 不使用 Logback,而是使用 Apache Commons Logging ( http://commons.apache.org/logging/ )。 有幾種方法可以禁用 Commons Logging:

  • 通過將以下內容添加到 Main 類的靜態初始化程序塊來完全禁用 Commons Logging,這必須在 PDFBOX 創建Log實例之前執行:

     static { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); }
  • 通過在啟動應用程序時傳遞以下 JVM 參數來禁用 Commons Logging:

     -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog`
  • 通過將以下內容添加到 Main 類的靜態初始化程序塊,禁用 PDFBOX 命名空間的 Commons Logging,這 * 必須** 在 PDFBOX 創建Log實例之前執行(注意:您也可以使用Level.SEVERE ,具體取決於您的容忍度有 PDFBOX 的日志輸出):

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

commons-logging.properties一種選擇是將一個名為commons-logging.properties的文件添加到您的類路徑(例如,在src/main/resources上的 maven 中),內容如下:

org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog

其他選項也適用於我,但這使代碼更簡潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM