使用Spring注入Log4J记录器 [英] Injecting Log4J loggers with Spring

查看:104
本文介绍了使用Spring注入Log4J记录器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有以下web.xml的spring 2.5 webapp

I have a spring 2.5 webapp with the following 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.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>

我宣布了这个豆

    <bean id="mylog"
    class="org.springframework.beans.factory.config.CommonsLogFactoryBean">
    <property name="logName" value="mylog" />
</bean>

inside services-context.xml(这是一个辉煌的/spring项目).

inside services-context.xml (it's a blazeds/spring project).

我以这种方式将其注入UserDAO bean:

I inject it this way into UserDAO bean :

    <bean id="user" class="com.acotel.msp.database.UserDAO" >
    <property name="mylog" ref="mylog" />
    <property name="jsonClient" ref="jsonClient" />
</bean>

这是log4j.xml配置文件:

This is log4j.xml config file :

    <?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>

在我的课堂上,我有这个:

In my class I have this :

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;
}}

我希望登录UserDAO类将登录到FILE附加程序,但事实并非如此.文件已创建,但为空. ROOT附加程序正常工作. 我在做什么错了?

I hoped that logging in class UserDAO would log to the FILE appender, but It does not. The file is created but is empty. ROOT appender works correctly. What am I doing wrong?

推荐答案

在您的services-context.xml文件中,尝试将"myLog" bean的"logName"属性设置为"com.bla.database". 应该与您的log4j.xml配置文件中定义的记录器名称匹配.

In your services-context.xml file, try setting the "logName" property of the "myLog" bean to "com.bla.database". This should match up with the name of the logger defined in your log4j.xml configuration file.

这篇关于使用Spring注入Log4J记录器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆