Log4j не находит пользовательский аппендер с помощью файла свойств - PullRequest
7 голосов
/ 20 октября 2010

Я пытаюсь настроить log4j в проекте плагина Eclipse, используя следующий файл свойств XML, который включает в себя пользовательский appender с именем EclipseLoggingAppender:

<?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

Кто-нибудь знает, в чем дело?может быть проблема с classpath? ..

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Да, это проблема пути к классам.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 в classpath, найдя соответствующий файл jar и добавив его в classpath.Т.е. беги

java -cp appender.jar com.mypackage.MyClass
1 голос
/ 17 октября 2010

для начала у вас может быть только один <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> 

Как вы добавили свой собственный регистратор в путь к классам?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...