【问题标题】:Disabling logging messages from org.apache.fontbox and ...pdfbox禁用来自 org.apache.fontbox 和 ...pdfbox 的日志消息
【发布时间】:2022-10-07 15:52:51
【问题描述】:

我使用 PDFbox 阅读 PDF 文件;我知道它不使用 Log4j,它使用 apache 的通用日志记录(听到这个我很惊讶,因为它的 Maven 配置包括 Log4j v1)。

当我运行我的程序时,我收到如下消息:

18:13:20.093 [SwingWorker-pool-2-thread-1] DEBUG org.apache.fontbox.ttf.PostScriptTable - No PostScript name information is provided for the font CourierNewPS-BoldMT
18:13:20.102 [SwingWorker-pool-2-thread-1] DEBUG org.apache.fontbox.ttf.GlyphSubstitutionTable - Type 4 GSUB lookup table is not supported and will be ignored
18:13:20.102 [SwingWorker-pool-2-thread-1] DEBUG org.apache.fontbox.ttf.GlyphSubstitutionTable - Type 6 GSUB lookup table is not supported and will be ignored
18:13:20.102 [SwingWorker-pool-2-thread-1] DEBUG org.apache.fontbox.ttf.GlyphSubstitutionTable - Type 6 GSUB lookup table is not supported and will be ignored

(关于 GlyphSubstitutionTable 的 68 条消息),以及

18:13:20.163 [SwingWorker-pool-2-thread-1] DEBUG org.apache.fontbox.ttf.GlyphSubstitutionTable - Type 4 GSUB lookup table is not supported and will be ignored
18:13:20.476 [Finalizer] DEBUG org.apache.pdfbox.io.ScratchFileBuffer - ScratchFileBuffer not closed!
18:13:23.327 [Finalizer] DEBUG org.apache.pdfbox.io.ScratchFileBuffer - ScratchFileBuffer not closed!

我尝试将commons-logging.properties 文件放入src/main/resources 包含

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

我尝试将代码 java.util.logging.Logger.getLogger(\"org.apache.pdfbox\").setLevel(java.util.logging.Level.OFF) 放入包含我程序的 static void main 方法的类的静态初始化程序中。

我试过把

System.setProperty(\"org.apache.commons.logging.Log\",  \"org.apache.commons.logging.impl.NoOpLog\");

单独并与前面的代码一起放入该静态初始化程序。

当我在我的代码中阅读 PDF 时,我仍然会收到上面提到的日志消息以及上述所有尝试修复。我怎样才能消除它们;我宁愿只将它们限制为警告、错误和严重消息,而不是消除所有消息,但在这一点上,我会接受任何一个的建议。

  • 我所做的是添加 log4j2 并在 XML 文件中设置日志级别(公共日志记录在您的代码和实际日志记录库之间)。 PDFBox 不使用 log4j,可能是旧版本。
  • @tilman Hausherr -- 抱歉,不是 PDFBox 通过 Maven 获取旧版本的 log4j,而是 Tesseract。我两者都用,只是搞不清楚我指的是哪一个。我试着按照你的建议去做——包括 log4j api 和 core(我已经有 core,但没有 api),并在 log4j.properties 中添加了一个配置行,但我仍然收到所有这些消息。我将看看我能做些什么来学习如何使用 XML,并看到它出于某种原因做得更好。
  • log4j2 仅使用 xml 配置文件 AFAIK。这是我的 (log4j2,xml): <?xml version=\"1.0\" encoding=\"UTF-8\"?> <Configuration> <Appenders> <Console name=\"STDOUT\" target=\ "SYSTEM_OUT\"> <PatternLayout pattern=\"%d{dd.MM.yyyy HH:mm:ss} %-5p %C{2}:%L - %m%n\"/> </Console> < /Appenders> <Loggers> <Logger name=\"org.springframework\" level=\"warn\" additivity=\"false\"> <AppenderRef ref=\"STDOUT\"/> </Logger> <Root level =\"info\"> <AppenderRef ref=\"STDOUT\"/> </Root> </Loggers> </Configuration>

标签: java pdfbox apache-commons-logging


【解决方案1】:
public class Main {
static {
    java.util.logging.Logger.getLogger(
        "org.apache").setLevel(java.util.logging.Level.SEVERE);
}
// ...

也帮助我禁用了字体框的警告。

而"org.apache.pdfbox" 仅禁用 pdfbox 警告,而不禁用 fontbox 警告。

而"org.apache.fontbox" 不知何故不会禁用字体框警告。

【讨论】:

    猜你喜欢
    • 2011-07-11
    • 2014-01-24
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多