2015/07/09(木)LogbackでプロセスIDを出力
2015/07/09 13:25
Java1.7 + logback-1.1.3
あまりいい方法が見つからなかったが、とりあえず出りゃいいやまではできた。
起動コマンドなりスクリプトなりがいじれるのなら、SystemProperty経由で設定・取得する方法が使える。
[起動コマンド]
exec java -Dpid=$$ -jar /foo/bar.jar[logback.xml]
<pattern>%d{yyyy/MM/dd HH:mm:ss} [${pid}] %level %msg%n</pattern>-Dpid=$$で、プロパティ:pidにプロセスIDをセット、patternに${pid}と記述してやるとlobackの機能で出力できる。
もちろんUnix環境限定。
なお、シェル側のプロセスIDがほしい場合は、execを外し直接javaコマンドをたたく。
java -Dpid=$$ -jar /foo/bar.jarWebアプリケーションで動いている場合は、何がしかプロセスIDに相当するものがSystemPropertyにいると思うので${}でそれを拾えばいい(はず)。
本当なら、ManagementFactory.getRuntimeMXBean()で取得するのが正解のようだが、その場合PatternLayoutをカスタムしてコンバータをいじって… とやらなければいけない気がする。規模によってはさすがに大仰か。
[参考]
Igor Minar's Blog: How a Java Application Can Discover its Process ID (PID)