2010-10-20 25 views
6

我嘗試使用下面的XML屬性文件來配置一個Eclipse插件項目log4j的,包括所謂的EclipseLoggingAppender自定義的appender:的Log4j沒有找到自定義添加器使用屬性文件

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true"> 
    <appender name="eclipseErrorView" class="com.lior.ibd.utils.logging.EclipseLoggingAppender"/> 

<appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
    </appender> 

    <root> 
    <priority value ="debug" /> 
    <appender-ref ref="console" /> 
    </root> 
    <logger name="com.lior"> 
    <level value ="warn" /> 
    <appender-ref ref="eclipseErrorView" /> 
    </logger> 

</log4j:configuration> 

我通過這個屬性文件複製到下面的語句中的代碼:

DOMConfigurator.configure(filename); 

但加載應用程序,我得到以下錯誤消息時:

log4j:ERROR Could not create an Appender. Reported error follows. 
java.lang.ClassNotFoundException: com.lior.ibd.utils.logging.EclipseLoggingAppender 

任何人都知道什麼是交易?可能是一個類路徑問題?

回答

1

是的,這是一個類路徑問題。 Log4j正在尋找類com.lior.ibd.utils.logging.EclipseLoggingAppender。 (可能附加器,在您的組織寫了什麼人嗎?)

如果刪除線:

<appender name="eclipseErrorView" class="com.lior.ibd.utils.logging.EclipseLoggingAppender"/> 

<logger name="com.lior"> 
    <level value ="warn" /> 
    <appender-ref ref="eclipseErrorView" /> 
</logger> 

的log4j應當予以受理。

或者將EclipseLoggingAppender添加到類路徑中,方法是找到合適的jar文件並將其添加到類路徑中。即運行

java -cp appender.jar com.mypackage.MyClass 
+0

我不想刪除這些行,因爲我希望這個appender在應用程序框架中運行......你是什麼意思的「將EclipseLoggingAppender添加到類路徑「? – Protostome 2010-10-20 14:40:42

+1

@Protostome - 這取決於你的環境。你是從命令行還是在應用程序服務器中運行代碼? – krtek 2010-10-20 15:09:15

+0

這是一個Eclipse RCP應用程序 – Protostome 2010-10-20 15:10:35

1

對於初學者,你只能有一個<root>元素。你想要更類似於

<appender name="eclipseErrorView" class="com.mypackage.EclipseLoggingAppender"> 
    <filter class="org.apache.log4j.varia.LevelRangeFilter Source code of org.apache.log4j.varia.LevelRangeFilter"> 
    <param name="LevelMin" value="WARN" /> 
    </filter> 
</appender> 

<root> 
    <priority value ="debug" /> 
    <appender-ref ref="console" /> 
    <appender-ref ref="eclipseErrorView" /> 
</root> 

你是如何將自定義記錄器添加到類路徑的?

+0

EclipseLoggingAppender位於不同的插件項目中,並導出到其他插件。所有使用日誌實用工具的插件都在他們的'必需插件'部分包含了這個插件項目...... – Protostome 2010-10-17 15:44:50