0
我用下面的log4j.xml文件時跳過一個log4j的自定義追加程序的裝載,的Log4j:如何服務器啓動
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender class="org.apache.log4j.RollingFileAppender" name="FILE">
<param value="${logfile}" name="File" />
<param value="10" name="MaxBackupIndex" />
<param value="200MB" name="MaxFileSize" />
<layout class="org.apache.log4j.PatternLayout">
<param value="%d[%t] %-5p(%F:<%M>:%L)- %m%n" name="ConversionPattern" />
</layout>
</appender>
<appender class="com.ubsc.at.properties.Log4JCustomAppender" name="CUSTAPPEN">
<layout class="org.apache.log4j.PatternLayout">
<param value="%m" name="ConversionPattern" />
</layout>
</appender>
<appender class="org.apache.log4j.AsyncAppender" name="ASYNC">
<param name="Blocking" value="false"/>
<param name="BufferSize" value="512"/>
<appender-ref ref="CUSTAPPEN" />
</appender>
<root>
<level value="${logLevel}" />
<appender-ref ref="FILE" />
<appender-ref ref="ASYNC" />
</root>
</log4j:configuration>
我得到的時間碼頭服務器在如下問題開始。
java.lang.ClassNotFoundException: com.ubsc.at.properties.Log4JCustomAppender
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198)
我想這是因爲log4j.xml的加載比我的自定義Appender類多很多?
無論如何,我可以應用Class Level過濾,以便在服務器啓動期間跳過此類的loadin。
請提前建議,謝謝。
所有這些方法似乎在生產中發生了很大的變化,所以我想沒有任何簡單的方法可以避免從jetty父類加載器進行Log4JCustomAppender轉義? – Kiran
使用Log4jConfigListener並不是一個很大的改變,但如果您需要生產的快速修復,我沒有任何解決方案。 –
非常感謝 – Kiran