2016-06-27 5 views
1

Мои результаты Maven проекта в файл WAR развернут на сервере TomcatSLF4J не создали

Я включил зависимость к SLF4J-log4j подобное в моей pom.xml

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.7.21</version> 
</dependency> 

log4j .Properties файл выглядит так, что (я убедился, что это на самом деле развертывается в файле войны и заканчивается в WEB-INF/классы):

log4j.rootLogger = DEBUG, MyFile 

# Define the file appender 
log4j.appender.MyFile=org.apache.log4j.FileAppender 
log4j.appender.MyFile.File=${catalina.base}/logs/MyFile.log 
log4j.appender.MyFile.ImmediateFlush=true 

log4j.appender.MyFile.Threshold=DEBUG 

log4j.appender.MyFile.layout=org.apache.log4j.PatternLayout 
log4j.appender.MyFile.layout.ConversionPattern=%-5p [%t]: %m%n 

следующий код должен AFAIK производить файл журнала в мой том cat logs с именем MyFile.log, который также включает мой выход журнала ... но это не так. Файл даже не создается.

EDIT2: Вместо этого я обнаружил, что записи журнала записываются в STDOUT вместо лог-файл FileAppender ...

EDIT3: Я тестировал на двух разных Tomcats (один на Suse Linux, другой на Windows как услугу). В результате, по существу, тот же

private Logger logger = LoggerFactory.getLogger(MyClass.class); 

... 

logger.info("User {} not found", cn); 

EDIT:

  • Я проверил файл банку этого LOG4J является также развертывается
  • прав пользователя достаточно для создания файла журнала. В моем первом тесте я даже видел созданный файл (но все еще пустой). В последующих тестах файл журнала больше не был создан

Что я делаю неправильно?

+0

Вы также использовали log4j.jar в папке/lib? – Fildor

+0

slf4j-log4j имеет зависимость от log4j, поэтому да, log4j также был развернут в WEB-INF/lib (я также проверил) – devnull69

+0

Просто хотел убедиться ... И права пользователей тоже не проблема? Может ли ваше приложение создавать файлы в catalina.base/logs? – Fildor

ответ

0

Мне удалось решить проблему, используя следующий log4j.xml вместо log4j.properties. Я не уверен в причине, почему ...

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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="MyFile" class="org.apache.log4j.FileAppender"> 
     <param name="file" value="${catalina.base}/logs/MyFile.log"/> 
     <param name="Append" value="true"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss.SSS} [%t] %-5p %c{1}:%M - %m%n"/> 
     </layout> 
    </appender> 

    <root> 
     <priority value="info"/> 
     <appender-ref ref="MyFile"/> 
    </root> 

</log4j:configuration> 
0

Попробуйте изменить путь к файлу log4j.appender.MyFile.File=logs/MyFile.log. Поскольку установочный каталог Tomcat - это текущий каталог для вашего приложения, он должен работать без параметра ${catalina.base}, который может не существовать в контексте вашего приложения.

+0

Не помогает. Тем временем я узнал, что записи журнала записываются в STDOUT вместо файла журнала FileAppender ... – devnull69

+0

Затем также просмотрите файл журнала stderr. Log4j обычно пишет там информацию о любых проблемах с конфигурацией. –