繁体   English   中英

在log4j JDBCAppender中保存额外的值

[英]Saving extra values in log4j JDBCAppender

我想在我的日志表中存储额外的值,例如将用户ID存储在单独的列中。 有谁知道我怎么能这样做?

这是我的配置:

<appender name="jdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender">
        <param name="URL" value="jdbc:sqlite:D:/download/mapLogic/sf_log.db" />
        <param name="user" value="" />
        <param name="password" value="" />
        <param name="driver" value="org.sqlite.JDBC" />
        <param name="sql"
            value="INSERT INTO sf_log(Message,Priority,Logger,Date) VALUES ('%m','%p','%c','%d{ABSOLUTE}')" />
    </appender>

谢谢

您可以在MDC中维护用户,然后将其用于insert语句中。

MDC.put("user", userid);
try {
  doTheActualWorkWhichWillUseLogger();
} finally {
  // need to remove this to avoid causing leaks
  MDC.remove("user");
}

请注意,您不必为每个logger调用执行此操作,只需执行一次,但我将remove说明如果要在Servlet中使用它,则必须再次清除MDC完成了通话。

然后为您的插入声明:

INSERT INTO sf_log (Message,Priority,Logger,Date, user) 
     VALUES ('%m','%p','%c','%d{ABSOLUTE}', '%X{user}')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM