在logback中设置带有进程号pid的日志名

2,773 阅读1分钟

项目使用的日志系统是springboot自带的日志系统也就是logback。 从springboot的配置中配置好日志的配置路径

logging:
	config: classpath:logback-spring.xml

写一个LoggerStartUpListener类继承ContextAwareBase实现LoggerContextListener接口

public class LoggerStartupListener extends ContextAwareBase implements LoggerContextListener {
  private boolean started = false;
  private String getPid() {
      return ManagementFactory.getRuntimeMXBean().getName();
  }

  @Override
  public boolean isResetResistant() {
      return false;
  }

  @Override
  public void onStart(LoggerContext loggerContext) {
      if (started) {
          return;
      }
      Context context = getContext();
      context.putProperty("PID", getPid());
      started = true;
  }

  @Override
  public void onReset(LoggerContext loggerContext) {

  }

  @Override
  public void onStop(LoggerContext loggerContext) {

  }

  @Override
  public void onLevelChange(Logger logger, Level level) {

  }
 }

从logback-spring.xml中配置这个监听类就可以了,ps:记得包名换一下

<contextListener class="com.kingc.sgfxfxpt.standaloneparser.config.LoggerStartupListener"/>

然后从property中用${}的方式来调用这个pid端口号 例如

<property name="appName" value="standaloneparser${PID}"></property>