gpt4 book ai didi

java - 在 log4j JDBCAppender 中保存额外的值

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:54 24 4
gpt4 key购买 nike

我想在我的日志表中存储额外的值,例如将用户 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 中维护用户然后在您的插入语句中使用它。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com