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 java.io.File;
20 import java.io.IOException;
21 import java.lang.management.ManagementFactory;
22
23 import org.apache.logging.log4j.core.LogEvent;
24 import org.apache.logging.log4j.core.config.plugins.Plugin;
25 import org.apache.logging.log4j.util.ProcessIdUtil;
26
27 @Plugin(name = "ProcessIdPatternConverter", category = "Converter")
28 @ConverterKeys({ "pid", "processId" })
29 public final class ProcessIdPatternConverter extends LogEventPatternConverter {
30 private static final String DEFAULT_DEFAULT_VALUE = "???";
31 private final String pid;
32
33
34
35
36 private ProcessIdPatternConverter(final String... options) {
37 super("Process ID", "pid");
38 final String defaultValue = options.length > 0 ? options[0] : DEFAULT_DEFAULT_VALUE;
39 String discoveredPid = ProcessIdUtil.getProcessId();
40 pid = discoveredPid.equals(ProcessIdUtil.DEFAULT_PROCESSID) ? defaultValue : discoveredPid;
41 }
42
43
44
45
46
47 public String getProcessId() {
48 return pid;
49 }
50
51 public static void main(final String[] args) {
52 System.out.println(new ProcessIdPatternConverter().pid);
53 }
54
55
56
57
58
59
60
61 public static ProcessIdPatternConverter newInstance(final String[] options) {
62 return new ProcessIdPatternConverter(options);
63 }
64
65
66
67
68 @Override
69 public void format(final LogEvent event, final StringBuilder toAppendTo) {
70 toAppendTo.append(pid);
71 }
72 }