2010-10-20 63 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