在我的基于Spring 4.1的应用程序中,我没有使用任何web.xml。如何在我的应用程序中没有web.xml初始化log4j?我遇到了this所以问题是通过web.xml建议所需的配置,但我不知道如何通过代码来完成。
。我已将我的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:WARN找不到记录器的appender (org.springframework.web.context.support.StandardServletEnvironment)。 log4j:WARN请正确初始化log4j系统。
请帮忙。
答案 0 :(得分:1)
将log4j添加为依赖项并将log4j.properties放入main / resources中 - 应该可以正常工作。
答案 1 :(得分:1)
当你开始没有web.xml
的spring应用程序时,我想你有一些实现WebApplicationInitializer
的初始化类,可能会扩展AbstractAnnotationConfigDispatcherServletInitializer
。
如果您对freakman提出的classpath基础上的标准 log4j.properties
不满意,您可以覆盖onStartup
方法以使用{{来配置log4j 1}} - 不要忘记调用基类实现...
答案 2 :(得分:0)
您可以将它用作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>