Spring security Log4j写入spring安全用户名

Spring security Log4j写入spring安全用户名,spring-security,log4j,Spring Security,Log4j,我在应用程序中使用log4j和spring安全性,记录器应该在每条消息中使用用户名编写日志。我对这一切都很陌生,有人能提供一些建议或链接吗?也许有一些标准的方法可以解决这个问题? 多谢各位 编辑 使用SpringFramework 3.1 我的spring-security.xml是: <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframe

我在应用程序中使用log4j和spring安全性,记录器应该在每条消息中使用用户名编写日志。我对这一切都很陌生,有人能提供一些建议或链接吗?也许有一些标准的方法可以解决这个问题? 多谢各位

编辑 使用SpringFramework 3.1 我的spring-security.xml是:

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/security 
    http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <http pattern="/favicon.ico" security="none" />
    <http auto-config="true">
            <intercept-url pattern="/**" access="ROLE_ADMIN"/>
    </http>

<authentication-manager>
    <authentication-provider>
        <user-service>
            <user name="detect_me" password="1111" authorities="ROLE_ADMIN" />
        </user-service>
    </authentication-provider>
</authentication-manager>

和log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>    
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %p [%c] - %m%n" />
        </layout>
    </appender>
    <appender name="R" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="/logs/urlbuilderweb.log"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %p %t %c - %m%n" />            
        </layout>
    </appender>
    <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
        <param name="BufferSize" value="10000"/>
        <appender-ref ref="R"/>
    </appender>
    <logger name="org.springframework">
        <level value="WARN"/>
    </logger>
    <logger name="org.directwebremoting">
        <level value="WARN"/>
    </logger>
    <logger name="org.apache.http">
        <level value="WARN"/>
    </logger>
    <logger name="org.hibernate">
        <level value="WARN"/>
    </logger>
    <root>
        <level value="INFO" />
        <appender-ref ref="ASYNC"/>
    </root>
</log4j:configuration>

您可以使用。 设置一些过滤器/拦截器(取决于您使用的演示技术)。添加嵌套诊断上下文(筛选器示例):

确保在Spring安全筛选器链(web.xml)之后执行筛选器:

等你打电话的时候

LOGGER.info("some text");
代码中的任何地方都可以看到

Username=corresponding_login some text

现在在日志中,建议使用
MDC
而不是
NDC
,它(a)允许您存储多个值(它是名称/值对的映射)和(b)由子线程继承。2年后<代码>NDC.pop()NDC.push(),也会调用code>未被调用。
%x %d %p %t %c - %m%n
LOGGER.info("some text");
Username=corresponding_login some text