使用不带web.xml的spring 4.1在应用程序中初始化log4j

时间:2014-10-20 04:04:18

标签: spring servlet-3.0

在我的基于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系统。

请帮忙。

3 个答案:

答案 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>