在 logback 日志文件中获取 PID

Get PID in logback log file

在 Spring-Boot 之外使用 logback 时,如何将 ProcessID 放入日志文件名中?

RollingFileAppender中我想定义:

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

如何获得 ${PID} 集,或者是否有标准的获取方法?

  1. 了解如何从 JVM 内部获取自己的 PID - How can a Java program get its own process ID?
    ProcessHandle.current().pid()
    
  2. 创建自定义 PropertyDefiner
    package com.example;
    import ch.qos.logback.core.PropertyDefinerBase;
    
    class PidPropertyDefiner extends PropertyDefinerBase {
      public String getPropertyValue() {
        return Long.toString(ProcessHandle.current().pid());
      }
    }
    
  3. 使用 属性 定义器将 属性 注入到 logback 中:
     <define name="SELF_PID" class="com.example.PidPropertyDefiner" />
    

... 或者使用 logback.groovy 而不是 logback.xml,在那里你可以直接访问 JVM 的每一部分。