我想在日志表中存储额外的值,例如将用户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}')
关于java - 在log4j JDBCAppender中保存额外的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9923463/