记录器在调用第三方jar方法后突然停止工作。我检查了jar的代码,他们也将log4j与log4j.xml一起使用。我正在使用属性文件配置log4j。
我的log4j配置
log4j.rootLogger=DEBUG, stdout, R
#log4j.rootLogger=ERROR, stdout, R
log4j.appender.R.File=/logs/app_test.log
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.MaxBackupIndex=175
log4j.appender.R.layout.ConversionPattern=%d %p %t %c - %m%n
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.R=org.apache.log4j.RollingFileAppender
第三方日志配置(log4j.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!--Pattern used: Date Thread_Name Full_Class_Name.Method_Name Level:Line
no -->
<!-- %-23d{ISO8601} [THREAD:%t] [%-2c.%M():%L] [%p] - %m%n -->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-23d{ISO8601} [%-5p] [%-22t] [%-30C{1}:%4L] - %m%n" />
</layout>
</appender>
<appender name="errorAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File"
value="${catalina.base}/logs/metascan/metsascanWrapperError.log" />
<param name="maxFileSize" value="10MB" />
<param name="Threshold" value="ERROR" />
<param name="maxBackupIndex" value="2" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy MM dd HH:mm:ss:SSS} [%-40t] %5p - %m %n" />
</layout>
</appender>
<appender name="infoAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File"
value="${catalina.base}/logs/metascan/metsascanWrapperInfo.log" />
<param name="maxFileSize" value="10MB" />
<param name="maxBackupIndex" value="2" />
<param name="Threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-23d{ISO8601} [%-5p] [%-22t] [%-30C{1}:%4L] - %m%n" />
</layout>
</appender>
<appender name="debugAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File"
value="${catalina.base}/logs/metascan/metsascanWrapperDebug.log" />
<param name="maxFileSize" value="10MB" />
<param name="maxBackupIndex" value="2" />
<param name="Threshold" value="DEBUG" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-23d{ISO8601} [%-5p] [%-22t] [%-30C{1}:%4L] - %m%n" />
</layout>
</appender>
<category name="com.xerox.metascan" additivity="true">
<priority value="ERROR" />
<appender-ref ref="infoAppender" />
<appender-ref ref="debugAppender" />
<appender-ref ref="consoleAppender" />
</category>
<!-- <category name="org.springframework"> <priority value="error" /> <appender-ref
ref="infoAppender90" /> <appender-ref ref="errorAppender90" /> </category> -->
<root>
<priority value="error" />
<appender-ref ref="errorAppender" />
<appender-ref ref="consoleAppender" />
</root>
</log4j:configuration>
我已经阅读了log4j网站上的配置,偏好设置始终会转到属性文件上的log4j.xml。因此,我不想在第三方jar中进行更改。我以为他们正在覆盖我的log4j配置,但我不知道确切的问题,因为即使system.out.println也不起作用。
那么我们如何解决该问题,有什么办法可以忽略第三方日志配置?
任何建议都会有所帮助,谢谢。
答案 0 :(得分:0)
否,您不能忽略第三方日志,可以通过在外部加载log4j配置来覆盖它们。
PropertyConfigurator.configure("log4j.properties");
但理想情况下,这不是一个好习惯。您应该告诉他们谁为您提供了jar,他们应该解决此问题,因为任何第三方jar都不会影响您的配置。