私のlog4jsログにPIDを含める必要があります。スレッドコンテキストを使用する多くの例があります。ただし、作成される個々のスレッドごとにこれらを設定する必要があります。私はこれに反対して拘束されています。スレッドコンテキストを使用せずにlog4j2にPIDを記録する
私は、スレッドコンテキストを使用しないか、または任意のクラスから作成される可能性のあるスレッドに対して、すべてのスレッドコンテキストでPIDを設定できる解決策が必要です。
私のlog4jsログにPIDを含める必要があります。スレッドコンテキストを使用する多くの例があります。ただし、作成される個々のスレッドごとにこれらを設定する必要があります。私はこれに反対して拘束されています。スレッドコンテキストを使用せずにlog4j2にPIDを記録する
私は、スレッドコンテキストを使用しないか、または任意のクラスから作成される可能性のあるスレッドに対して、すべてのスレッドコンテキストでPIDを設定できる解決策が必要です。
Log4j2 issue trackerに機能要求を作成して、組み込み機能にしてください。
今のところ、カスタムプラグインを作成できます。以下のコードを参照してください。これにより、pattern layoutに%pid
を指定することができます(メッセージの場合は%m
に似ています)。
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
@Plugin(name = "ProcessIdPatternConverter", category = "Converter")
@ConverterKeys({ "pid", "processId" })
public final class ProcessIdPatternConverter extends LogEventPatternConverter {
private final String pid;
private ProcessIdPatternConverter(String[] options) {
super("Process ID", "pid");
String temp = options.length > 0 ? options[0] : "???";
try {
// likely works on most platforms
temp = ManagementFactory.getRuntimeMXBean().getName().split("@")[0];
} catch (final Exception ex) {
try {
// try a Linux-specific way
temp = new File("/proc/self").getCanonicalFile().getName();
} catch (final IOException ignoredUseDefault) {}
}
pid = temp;
}
/**
* Obtains an instance of ProcessIdPatternConverter.
*
* @param options users may specify a default like {@code %pid{NOPID} }
* @return instance of ProcessIdPatternConverter.
*/
public static ProcessIdPatternConverter newInstance(final String[] options) {
return new ProcessIdPatternConverter(options);
}
@Override
public void format(final LogEvent event, final StringBuilder toAppendTo) {
toAppendTo.append(pid);
}
}
はどのようにLog4j2プラグインの作業の詳細についてはmanualを参照してください。 Log4j2があなたのプラグインを認識させるために
一つの方法は、構成のpackages
属性にプラグインクラスのパッケージ名を指定することにより、次のとおりです。
<Configuration status="trace"
packages="com.myorg.mypluginpackage">
(トレースは、トラブルシューティングを支援するLog4j2内部デバッグに切り替わります。)
次の機能リクエストが追加されました:https://issues.apache.org/jira/browse/LOG4J2-1884 – Matt