如何将进程ID添加到LOG4J日志文件?

Ara*_*rav 17 java log4j java-ee pattern-layout

我目前在log4j中有以下模式布局.我想将Process id添加到日志文件中.我该怎么做?

log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
Run Code Online (Sandbox Code Playgroud)

粘贴样本日志消息

2011-01-07 11:48:21,940 [main] INFO  Testing1
2011-01-07 11:48:21,942 [main] INFO  Test.common.ApplicationProperties - Used log4j 
Run Code Online (Sandbox Code Playgroud)
log4j.properties
"log4j.properties" [Read only] 26 lines, 884 characters
log4j.rootCategory=DEBUG, stdout, A1

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=WARN
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss}  %-5p  (%c) %m%n


log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.A1.File=/homw/cus/logs/ccl.02.log
log4j.appender.A1.MaxFileSize=5MB
log4j.appender.A1.MaxBackupIndex=40


log4j.category.test.common.DBConnectionPool=WARN
log4j.category.test.common.DataBaseHandler=WARN
log4j.category.test.cttg.tables=WARN
log4j.category.test.middleware.tables=WARN

log4j.logger.org.apache.axis=ERROR
log4j.logger.org.apache.catalina=ERROR
Run Code Online (Sandbox Code Playgroud)

ToY*_*nos 14

您应该使用MDC来执行此操作

在配置文件中:

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss}  %-5p  (%c) %m%n %X{PID}
Run Code Online (Sandbox Code Playgroud)

%X{PID}用于匹配上下文值PID

然后,在代码中,在记录开始之前:

log4j 1.x

RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
String pid = rt.getName();
MDC.put("PID", pid);
Run Code Online (Sandbox Code Playgroud)

log4j 2.x

RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
String pid = rt.getName();
ThreadContext.put("PID", pid);
Run Code Online (Sandbox Code Playgroud)

  • @omerkhalid我认为你应该创建一个你自己的问题,准确地说明你在做什么以及你想做什么. (2认同)

Tej*_*eni 2

没有办法使用标准 Java 类来做到这一点。通常,进程 ID 附加在文件级别而不是日志级别。这里(存档在这里)是一个这样做的例子