logback使用记录

通过自定义监听器,往logback中传参

我们的项目是部署在was集群中,需求是生成的日志文件中必须带有server名。

logback.xml中增加:

<contextListener class="com.xxx.xxx.LoggerStartupListener"/>

LoggerStartupListener

public class LoggerStartupListener extends ContextAwareBase
    implements LoggerContextListener, LifeCycle {
    
    

  private boolean started = false;

  @Override
  public void start() {
    
    
    if (started) {
    
    
      return;
    }
    Context context = getContext();
    context.putProperty("server.name", getServerName());
    started = true;
  }

  private String getServerName(){
    
    
      String str=System.getProperty("sun.java.command");
      String serverName=null;
      if(str!=null){
    
    
        String[] s=str.split("\\s+");
        serverName=s[s.length-1];
      }else{
    
    
        serverName="Log"+String.valueOf(Math.random()*100);
      }

    return serverName;
  }

  @Override
  public void stop() {
    
    }

  @Override
  public boolean isStarted() {
    
    
    return started;
  }

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

  @Override
  public void onStart( LoggerContext context ) {
    
    }

  @Override
  public void onReset( LoggerContext context ) {
    
    }

  @Override
  public void onStop( LoggerContext context ) {
    
    }

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

}

logback日志显示时间差8小时

改之前配置如下:

    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss,SSS}[%t][%c][%p]-%msg%n</pattern>
    </encoder>

错在HH:mm:ss.SSS和HH:mm:ss,SSS
在使用逗号时,会默认使用时区设置。
改之后

    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%t][%c][%p]-%msg%n</pattern>
    </encoder>

猜你喜欢

转载自blog.csdn.net/amunamuna/article/details/103434034