1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.pattern;
18
19 import org.apache.logging.log4j.core.LogEvent;
20 import org.apache.logging.log4j.core.config.plugins.Plugin;
21 import org.apache.logging.log4j.util.ProcessIdUtil;
22
23 @Plugin(name = "ProcessIdPatternConverter", category = "Converter")
24 @ConverterKeys({ "pid", "processId" })
25 public final class ProcessIdPatternConverter extends LogEventPatternConverter {
26 private static final String DEFAULT_DEFAULT_VALUE = "???";
27 private final String pid;
28
29
30
31
32 private ProcessIdPatternConverter(final String... options) {
33 super("Process ID", "pid");
34 final String defaultValue = options.length > 0 ? options[0] : DEFAULT_DEFAULT_VALUE;
35 final String discoveredPid = ProcessIdUtil.getProcessId();
36 pid = discoveredPid.equals(ProcessIdUtil.DEFAULT_PROCESSID) ? defaultValue : discoveredPid;
37 }
38
39
40
41
42
43 public String getProcessId() {
44 return pid;
45 }
46
47 public static void main(final String[] args) {
48 System.out.println(new ProcessIdPatternConverter().pid);
49 }
50
51
52
53
54
55
56
57 public static ProcessIdPatternConverter newInstance(final String[] options) {
58 return new ProcessIdPatternConverter(options);
59 }
60
61
62
63
64 @Override
65 public void format(final LogEvent event, final StringBuilder toAppendTo) {
66 toAppendTo.append(pid);
67 }
68 }