问题描述
我有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传递到数据库表?
谢谢
推荐答案
使用MDC(映射诊断上下文),例如此示例.
所以,您需要在某个地方映射用户名,例如:
MDC.put("username", username);
在log4j配置中,您可以这样使用:
<param name="ConversionPattern" value="INSERT INTO log_table (level, loc, msg, username) VALUES ( '%p','%C;%L', '%m', '%X{username}' )"/>
问题描述
I have log4j jdbcappender configuration as follows:
<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>
How can I pass username to the database table from log4j?
Thanks
推荐答案
Use the MDC (Mapped Diagnostic Context), like this example.
So, somewhere you need to map the username, e.g.:
MDC.put("username", username);
In your log4j configuration, you can use it like this:
<param name="ConversionPattern" value="INSERT INTO log_table (level, loc, msg, username) VALUES ( '%p','%C;%L', '%m', '%X{username}' )"/>