在没有web.xml的情况下使用spring 4.1初始化log4j
问题描述:
在我基于Spring 4.1的应用程序中,我没有使用任何web.xml。如何在我的应用程序中不使用web.xml来初始化log4j?我碰到this SO问题,它通过web.xml建议所需的配置,但我不知道如何通过代码来完成。在没有web.xml的情况下使用spring 4.1初始化log4j
。我已经把我的log4j.properties在WEB-INF/lib文件夹,它看起来像这样:
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:警告没有附加目的地可以为记录器 (org.springframework.web.context.support.StandardServletEnvironment)中找到。 log4j:WARN请正确初始化log4j系统。
请大家帮忙。
答
添加log4j作为依赖项,并将log4j.properties放入主/资源 - 应该工作正常。
答
当你开始一个没有web.xml
的弹簧应用程序时,我想你有一些初始化类实现WebApplicationInitializer
,并且可能延伸AbstractAnnotationConfigDispatcherServletInitializer
。
如果你所建议的freakman不满意的标准log4j.properties
在类路径的基础上,你可以在此改变onStartup
方法与Log4jConfigurer
配置log4j - 不要忘记调用基类的实现...
答
你可以在root-context.xml中使用它作为bean,使用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>
你试过把log4j.properties放入src/main/resources目录而不是WEB-INF/lib? – freakman 2014-10-20 08:47:21