Spring 带弹簧的注入式记录器4J
我有一个Spring2.5WebApp,其中包含以下web.xmlSpring 带弹簧的注入式记录器4J,spring,log4j,blazeds,code-injection,Spring,Log4j,Blazeds,Code Injection,我有一个Spring2.5WebApp,其中包含以下web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.s
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Spring BlazeDS Integration Samples</display-name>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>ServerBlaze</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/*-context.xml
</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/config/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>flex.messaging.HttpFlexSession</listener-class>
</listener>
<servlet>
<servlet-name>serverBlaze</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>serverBlaze</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
我希望登录类UserDAO会登录到文件appender,但事实并非如此。文件已创建,但为空。根追加器工作正常。
我做错了什么?在services-context.xml文件中,尝试将“myLog”bean的“logName”属性设置为“com.bla.database”。这应该与log4j.xml配置文件中定义的记录器名称相匹配。另一种方法是将日志记录视为一个横切关注点,并使用方面进行处理。您可以声明性地应用标准的Spring拦截器。也有,我自己也很喜欢Aspect。我想这样做,但我在Spring方面的专业知识还不够。事实上,我甚至不知道我在维基百科上读到的东西有什么不同:)你把commons日志和Log4j混在一起了。Te myLog变量应为org.apache.log4j.Logger类型,并且应为静态变量。这使得Spring很难注入它。。。我不知道是否有办法注入静态变量。
<bean id="mylog"
class="org.springframework.beans.factory.config.CommonsLogFactoryBean">
<property name="logName" value="mylog" />
</bean>
<bean id="user" class="com.acotel.msp.database.UserDAO" >
<property name="mylog" ref="mylog" />
<property name="jsonClient" ref="jsonClient" />
</bean>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${catalina.home}\\logs\\serverBlaze.log" />
<param name="datePattern" value="'.'yyyy-MM" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
...cut...
</layout>
</appender>
<appender name="ROOT" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${catalina.home}\\logs\\serverBlazeRoot.log" />
<param name="datePattern" value="'.'yyyy-MM" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n" />
</layout>
</appender>
<logger name="com.bla.database">
<level value="info" />
<appender-ref ref="FILE" />
</logger>
<root>
<priority value="info" />
<appender-ref ref="ROOT" />
</root>
</log4j:configuration>
package com.bla.database;
import java.util.ArrayList;
import json.Client;
import org.apache.commons.logging.Log;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import com.bla.MessageReceiver;
import com.bla.PropertiesManager;
import com.bla.interfaces.Users;
import com.bla.vo.User;
public class UserDAO {
private Log mylog;
private Client jsonClient;
public User getUser(String username, String password) {
User result = null;
try {
Users users = jsonClient.openProxy("userDAO", Users.class);
result = users.getUser(username, password);
mylog.info("Esito invio bean ["+result+"]");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return result;
}}