log4j jdbcappender将用户名传递给数据库表

时间:2012-05-20 11:33:29

标签: java log4j

我有log4j jdbcappender配置如下:

 <appender name="jdbcAppender" class="bean.CustomJdbcAppender">
        <param name="jndiDataSource" value="myDS"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="INSERT INTO log_table (level, loc, msg) VALUES ( '%p','%C;%L', '%m' )"/>
        </layout>

如何从log4j将用户名传递给数据库表?

谢谢

1 个答案:

答案 0 :(得分:2)

使用MDC(映射的诊断上下文),如this example

因此,您需要在某处映射用户名,例如:

MDC.put("username", username);

在log4j配置中,您可以像这样使用它:

<param name="ConversionPattern"
      value="INSERT INTO log_table (level, loc, msg, username) VALUES ( '%p','%C;%L', '%m', '%X{username}' )"/>