Настройка простого регистратора (slf4j) на Tomcat

У меня есть tomcat 7, работающий на машине с Windows в качестве службы. есть активная схема скользящего развертывания, где, если я добавляю военный файл в папку tomcat/webapps, он автоматически распаковывается и развертывается. Мой военный файл выглядит так:

MyApp.war
+- META-INF
+- WEB-INF
   +- classes
       + com.company... (the actual class files)
       +-simplelogger.properties
   +- lib
       +- slf4j-api-1.7.12
       +- slf4j-simple-1.7.12
   +- web.xml

В моем simplelogger.properties у меня есть это выходное свойство:

org.slf4j.simpleLogger.logFile=System.out

Предыдущая версия войны использовала system.out.println() для ведения журнала, и все, что было записано в sysout, добавлялось в файл tomcat/logs/stdout.log, поэтому я предполагаю, что это стандартное поведение кота.

К сожалению, моя новая установка не работает. Журнал не отображается в файле stdout.log. Он отлично работает, когда я запускаю войну в eclipse с плагином maven/tomcat.

Какие детали конфигурации я пропустил? Я поискал в папке tomcat/conf все, что связано с логированием, и нашел следующее:

  • В catalina.properties: ничего о регистрации.
  • В server.xml: ничего о логировании
  • logging.properties: я вижу много настроек, но ничего не связанного с sysout или stdout.logs. Для справки, вот полный файл.

person user1884155    schedule 22.04.2015    source источник


Ответы (1)


Вы должны настроить «консольное приложение», чтобы вывести вывод System.out в файл журнала.

Базовая конфигурация в вашем файле log4j.xml будет следующей:

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
 <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
 <param name="Target" value="System.out"/>
 <param name="Threshold" value="DEBUG"/>
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
 </layout>
</appender>
person killabyte_garcia    schedule 22.04.2015
comment
Я не использую log4j, и до того, как я добавил API slf4, не было никакого файла log4j.xml. Значит, что-то еще должно было заставить операторы sysout.out перейти в stdout.log. Я пытаюсь использовать простой регистратор вместо любых других привязок для достижения того же эффекта. - person user1884155; 22.04.2015