具有自定义列值的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,所以我觉得最好用我的应用程序来实现我自己的数据库记录器。