2014-10-20 2 views
1

В моем приложении на основе Spring 4.1 я не использую web.xml. Как я могу инициализировать log4j без web.xml в моем приложении? Я столкнулся с вопросом this SO, который предлагает необходимую конфигурацию через web.xml, но я не уверен, как это сделать с помощью кода.Инициализировать log4j в приложении с использованием Spring 4.1 без web.xml

. Я разместил мои log4j.properties в Lib папку WEB-INF/и это выглядит следующим образом:

log4j.rootLogger=debug, stdout, R 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 

# Pattern to output the caller's file name and line number. 
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n 

log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=example.log 

log4j.appender.R.MaxFileSize=100KB 
# Keep one backup file 
log4j.appender.R.MaxBackupIndex=1 

log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

log4j.category.org.springframework.beans.factory=DEBUG 

log4j-1.2.17.jar также в WEB-INF/Lib папки. Но появляется следующее сообщение при запуске:

log4j: WARN Нет appenders не может быть найдено для регистратора (org.springframework.web.context.support.StandardServletEnvironment). log4j: WARN Пожалуйста, правильно инициализируйте систему log4j.

Просьба помочь.

+0

Вы пытались поместить log4j.properties в src/main/resources dir вместо WEB-INF/lib? – freakman

ответ

1

добавить log4j как зависимость и поместить log4j.properties в main/resources - должен работать нормально.

1

При запуске пружинного приложения без web.xml, предположим, что у вас есть класс инициализации, реализующий WebApplicationInitializer, и, вероятно, расширение AbstractAnnotationConfigDispatcherServletInitializer.

Если вы не удовлетворены стандартlog4j.properties у основания пути к классам, предложенному freakman, вы можете overide метода onStartup для настройки log4j с Log4jConfigurer - не забудьте вызывает реализацию базового класса ...

0

Вы можете использовать его как bean-компонент внутри root-context.xml, используйте classpath для относительного пути. Он работает для меня

<bean id="log4jInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="sbeHome"> 
    <property name="targetClass" value="org.springframework.util.Log4jConfigurer" /> 
    <property name="targetMethod" value="initLogging" /> 
    <property name="arguments"> 
     <list> 
      <value>classpath:/conf/log4j.xml</value> 
     </list> 
    </property> 
</bean>