当前位置: 首页 > 知识库问答 >
问题:

禁用PDFBox上的日志记录

姬飞昂
2023-03-14

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

Changing font on <m> from <Arial Bold> 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 <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

编辑2

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

log4j.logger.org.apache.pdfbox=ERROR

共有3个答案

薄哲
2023-03-14

这对我有用:-请注意,如果这个答案适用,有多个这样的问题,并且我已经被要求将事情标记为重复。所以如果有人找到时间-就继续合并...

 // 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);
        }
岳浩穰
2023-03-14

pdfbox确实像你之前说的那样记录了很多错误,如果你把下面的行添加到log4j.properties它应该会清理东西

log4j.rootLogger.org.apache.pdfbox.pdmodel.font.PDFont=fatal
乔宏峻
2023-03-14

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

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);
 类似资料:
  • 这也许是一个很简单的问题。如何禁用Hikari-CP调试日志?在我的日志文件我有很多这样的消息 在我的日志4jconfig中。xml: 有人能告诉我记录器配置有什么问题吗? 谢谢!

  • 问题内容: 我有一些使用该软件包的工具化代码。现在该关闭日志记录了,我无法确定如何关闭标准记录器。 我错过了什么吗?我应该在进行日志调用之前检查标志,还是在生产中将其注释掉? 问题答案: 要完全禁用日志,最好调用Joril并将输出设置为无操作(例如) 但即使在此之后,操作仍将闲置约500-600 ns / op 1 这仍然可切断短路(左右 为100 ns / OP )通过使用自定义的实现,并实现所

  • 我目前正在尝试降低我在java项目中使用的PDFBox 1.8.6库的日志记录级别,但失败了。基于前面的问题,我在 /src/目录中有以下log4j.properties文件。 我不确定我还遗漏了什么,因为我仍然在控制台中收到类似以下消息的垃圾邮件。 如果有一种方法可以通过编程方式更改日志级别,那么我根本不会附加到属性文件,因为我在其他任何地方都不使用log4j。我不知道它是否使用log4j。属性

  • 我正在使用Python日志模块,并希望禁用由我导入的第三方模块打印的日志消息。例如,我使用的是如下所示: 当我执行logger.debug时,它会输出我的调试消息(“my Message!”),但它也会从我导入的任何模块中输出调试消息(如请求和许多其他东西)。 我只想看到我感兴趣的模块的日志消息。有没有可能让日志模块做到这一点?

  • 问题内容: 我最近将hibernate状态添加到了pom.xml中,并且运行良好。但是,日志记录很烦人,我不确定如何关闭它或限制它的级别(我什至不知道启动所有这些日志记录都包括了什么)。我是新来的,行尸走肉和hibernate。 这是我的pom.xml依赖项: 日志开始如下: 我尝试将log4j.properties文件添加到我的资源中,但似乎没有任何改变。我还尝试了simplelog.prope