具有自定义列值的Log4j JDBCAppender

问题描述:

我正在用Java构建数据分析Web应用程序。我每天都会从其他公司的项目中获取数据并执行一些流程。我通过独特的pid来识别每个项目。当我尝试使用log4j的插入行的问题DB,如:具有自定义列值的Log4j JDBCAppender

INSERT INTO app_log(pid, date, level, class, message) 

我只能获得运行期间,PID,我的处理是多线程。如果我设置SQL编程条款,如:

props.put("log4j.appender.DB.sql", "INSERT INTO app_log(pid, date, level, class, message) VALUES('" + productId + "','%d{yyyy-MM-dd HH:mm:ss}', '%p', '%c', '%m')"); 

会因为它们是在同一时间运行PID1日志是misset到PID2

我真正想实现的是将不同的日志按照自己的pid存储到DB中。

你能给我提供任何好的解决方案吗?

好吧,它似乎MDC和ThreadContext会搞砸pid,所以我觉得最好用我的应用程序来实现我自己的数据库记录器。