HDa*_*ave 30 java spring log4j web-applications
我有一个使用Spring的Log4jConfigurer类来初始化我的Log4J日志工厂的Web应用程序.基本上它使用不在类路径中的配置文件初始化Log4J.
这是配置:
<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>#{ MyAppHome + '/conf/log4j.xml'}</value>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
但是我在应用程序启动时收到此错误:
log4j:WARN No appenders could be found for logger
大量的Spring应用程序上下文初始化消息被打印到控制台.我认为这是因为Spring在有机会初始化我的记录器之前正在开始初始化我的应用程序.如果它很重要,我在Log4J上使用SLF4J.
有没有办法让我的Log4jConfigurer成为第一个初始化的bean?还是有其他方法来解决这个问题?
Ral*_*lph 47
您可以在web.xml中配置Log4j侦听器,而不是spring-context.xml
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.web.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
所以它在Spring开始之前就已经开始了.
我们的独立应用程序需要SMTPAppender一个spring配置文件中已存在电子邮件配置的地方,我们不希望在该配置文件中复制该配置文件log4j.properties.
我把以下内容放在一起,使用spring添加额外的appender.
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<bean factory-method="getRootLogger"
class="org.apache.log4j.Logger" />
</property>
<property name="targetMethod">
<value>addAppender</value>
</property>
<property name="arguments">
<list>
<bean init-method="activateOptions"
class="org.apache.log4j.net.SMTPAppender">
<property name="SMTPHost" ref="mailServer" />
<property name="from" ref="mailFrom" />
<property name="to" ref="mailTo" />
<property name="subject" ref="mailSubject" />
<property value="10" name="bufferSize" />
<property name="layout">
<bean class="org.apache.log4j.PatternLayout">
<constructor-arg>
<value>%d, [%5p] [%t] [%c] - %m%n</value>
</constructor-arg>
</bean>
</property>
<property name="threshold">
<bean class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"
id="org.apache.log4j.Priority.ERROR" />
</property>
</bean>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我们log4j.properties在类路径上也有一个文件,详细说明了我们的常规文件FileAppenders.
我意识到这对你所需要的东西可能有点过分了:)
| 归档时间: |
|
| 查看次数: |
89341 次 |
| 最近记录: |