如何屏蔽PDFBox第三方库在控制台输出的DEBUG日志
屏蔽PDFBox控制台冗余DEBUG输出的方案
你看到的[main] DEBUG开头的输出是日志框架打印的调试级日志,仅通过System.setProperty设置系统属性无法完全拦截,需要根据项目实际使用的日志框架调整对应配置,所有配置需要在PDFBox类首次加载前生效,否则不会起作用。
- 项目使用Logback(SpringBoot默认日志实现)
在src/main/resources路径下找到或新建logback.xml配置文件,添加如下配置,将对应包的日志输出级别调高:
<!-- 级别设为ERROR就只会打印致命错误,完全屏蔽DEBUG/INFO/WARN级输出 --> <logger name="org.apache.pdfbox" level="ERROR"/> <logger name="org.apache.fontbox" level="ERROR"/> <!-- 如果需要保留警告信息,把level值改成WARN即可 -->
- 项目使用Log4j2
在资源目录下的log4j2.xml中添加对应logger规则:
<Logger name="org.apache.pdfbox" level="error" additivity="false"> <AppenderRef ref="Console"/> </Logger> <Logger name="org.apache.fontbox" level="error" additivity="false"> <AppenderRef ref="Console"/> </Logger>
- 项目未引入第三方日志实现,使用JDK自带的Java Util Logging
可以直接在静态代码块最靠前的位置补充如下配置,比单纯设置系统属性的覆盖范围更全:
// 注意:这几行代码必须放在所有PDFBox相关类加载逻辑之前 System.setProperty("org.apache.pdfbox.level", "SEVERE"); System.setProperty("org.apache.fontbox.level", "SEVERE"); // 系统属性不生效时直接操作JUL日志对象设置级别 Logger.getLogger("org.apache.pdfbox").setLevel(Level.SEVERE); Logger.getLogger("org.apache.fontbox").setLevel(Level.SEVERE);
临时做功能测试不想修改全局配置的话,直接在测试类的静态初始化块里加上述对应日志级别设置代码即可,不会影响其他环境的日志输出。
内容的提问来源于stack exchange,提问作者JamesB
相关产品推荐
相关产品推荐

