log4j jdbcappender向数据库表传递用户名[英] log4j jdbcappender pass username to database table

本文是小编为大家收集整理的关于log4j jdbcappender向数据库表传递用户名的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我有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}' )"/>

本文地址:https://www.itbaoku.cn/post/1575121.html

问题描述

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}' )"/>