2012-05-17 6 views
-1

У меня есть сервер Linux, на котором я запускаю tomcat с помощью моей web-службы axis2.Log4j на сервере Linux

Я использую следующее для файла конфигурации Log4j: xml, который находится в той же директории, что и мой Java-файл webservice.

XML:

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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <!-- Appenders --> 
    <appender name="roll" class="org.apache.log4j.rolling.RollingFileAppender"> 
     <param name="file" value="~//..//tmp//CookTalesLog.log" /> 
       <param name="append" value="true" /> 
       <param name="encoding" value="UTF-8" /> 
       <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
         <!-- The file to roll to, this is a fairly intelligent parameter, if the file 
         ends in .gz, it gzips it, based on the date stamp it rolls at that time, 
         default is yyyy-MM-dd, (rolls at midnight) 
         See: http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html --> 
         <param name="FileNamePattern" value="CookTalesLog.%d.log.gz" /> 
       </rollingPolicy> 

       <layout class="org.apache.log4j.PatternLayout"> 
         <!-- The log message pattern --> 
         <param name="ConversionPattern" value="%5p %d{ISO8601} [%t][%x] %c - %m%n" /> 
       </layout> 
    </appender> 

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

</log4j:configuration> 

В коде Java: Я пытался использовать каждый из следующих строк

private static final Logger sLogObj = Logger.getLogger(ICDBWebService.class); 

private static final Log sLogObj = LogFactory.getLog(ICDBWebService.class); 

также используется:

static 
{ 
    DOMConfigurator.configure("log4j.xml"); 
} 

Для протоколирования:

sLogObj.debug("Login: email=" + email + " pwd= " + password); 

Файл журнала не создан ....

Любые идеи, что я делаю неправильно?

ответ

1

Двойной '//' может быть проблемой.

Вы можете включить внутренний отладочный вывод Log4J, передав -Dlog4j.debug=true в JVM или, если он работает на Tomcat export TOMCAT_OPTS="-Dlog4j.debug=true, чтобы увидеть, что происходит внутри Log4J.

+0

Теперь, кажется, что он не находит log4j.xml Где он должен быть расположен? – Yoav

+0

Самый простой способ - поместить его в пакет по умолчанию вашего приложения. Вы можете использовать JVM System.property 'log4j.configuration' (' -Dlog4j.configuration = foobar.xml'), чтобы сообщить Log4J, какой файл конфигурации использовать. – andih

0

Вы пробовали более простой путь к файлу? Вместо тильды и двойных косых черт, которые у вас есть на данный момент, попробуйте просто использовать что-то вроде /tmp/CookTalesLog.log и посмотреть, поможет ли это. Это может быть просто, что имя файла не распространяется должным образом, поэтому его нельзя создать. Есть ли что-нибудь в журналах Tomcat, чтобы предложить проблему?

0

Используйте следующие действия для загрузки файла XML в коде Java:

DOMConfigurator.configureAndWatch("log4jConfigFile.xml"); 
private static final Log log = LogFactory.getLog(ICDBWebService.class); 
Смежные вопросы