Skip to content
Advertisement

Get PID in logback log file

When using logback outside of Spring-Boot, how can I get the ProcessID into the log file name?

In the RollingFileAppender I’d like to define:

<file>my-log-${PID}.log</file>

How can I get the ${PID} set or is there a standard way of obtaining this?

Advertisement

Answer

  1. Learn how to get the own PID from inside the JVM – How can a Java program get its own process ID?
    ProcessHandle.current().pid()
    
  2. Create a custom PropertyDefiner:
    package com.example;
    import ch.qos.logback.core.PropertyDefinerBase;
    
    class PidPropertyDefiner extends PropertyDefinerBase {
      public String getPropertyValue() {
        return Long.toString(ProcessHandle.current().pid());
      }
    }
    
  3. Use that property definer to inject a property into the logback:
     <define name="SELF_PID" class="com.example.PidPropertyDefiner" />
    

… or use the logback.groovy instead of logback.xml, there you can just access every bit of JVM directly.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement