从 2.9 版开始,log4j2-core 中有一个插件ProcessIdPatternConverter就是这样做的。
只需在模式布局中设置%pid或%processId 即可记录它。
log4j 文档:https : //logging.apache.org/log4j/2.x/manual/layouts.html
也许MDC可以帮到你.试试这个:
Java:
import java.lang.management.ManagementFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ThreadContext;
public class TestPID {
private static final Logger LOG = LogManager.getLogger(TestPID.class);
static {
// Get the process id
String pid = ManagementFactory.getRuntimeMXBean().getName().replaceAll("@.*", "");
// MDC
ThreadContext.put("pid", pid);
}
public static void main(String[] args) {
LOG.info("Testing...");
}
}
Run Code Online (Sandbox Code Playgroud)
XML:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %5X{pid} %-5p %c#%M - %m%n" />
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
输出:
2014-09-10 00:13:49,281 7164 INFO TestPID#main - Testing...
????
That's the PID
Run Code Online (Sandbox Code Playgroud)
你可能想看到:
| 归档时间: |
|
| 查看次数: |
6660 次 |
| 最近记录: |