Java 具有自定义列值的Log4j JDBCAppender

Java 具有自定义列值的Log4j JDBCAppender,java,log4j,Java,Log4j,我正在用Java构建一个数据分析web应用程序。每天,我都从其他公司的项目中获取数据,并进行一些处理。我通过唯一pid来识别每个项目。当我尝试使用log4j向DB插入行时出现的问题如下: INSERT INTO app_log(pid, date, level, class, message) 我只能在运行时获取pid,并且我的处理是多线程的。如果我以编程方式设置SQL子句,如下所示: props.put("log4j.appender.DB.sql", "INSERT INTO app_lo

我正在用Java构建一个数据分析web应用程序。每天,我都从其他公司的项目中获取数据,并进行一些处理。我通过唯一pid来识别每个项目。当我尝试使用log4j向DB插入行时出现的问题如下:

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日志是否会错过到pid2,因为它们同时运行

我真正想要实现的是根据不同日志的pid将它们存储到数据库中


你能给我提供一些好的解决方案吗?

看起来MDC和ThreadContext会弄乱pid,所以我发现最好用我的应用程序实现我自己的DB Logger