Logback不同业务日志写入不同文件

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

真实开发中我们经常有这样的需求,需要将业务日志和系统日志进行区分,进行不同的采集。

如果使用logback作为日志组件,该怎么将不同日志写到不同文件呢?

logback.xml



    
    
    
    

    
        
            
                %d{yyyy-MM-dd/HH:mm:ss.SSS}|%X{localIp}|%X{requestId}|%X{requestSeq}|^_^|[%t] %-5level %logger{50} %line - %m%n
            
        
    

    
    
        ${LOG_HOME}/biz.log
        true
        
            ${LOG_HOME}/biz.log.%d
            12
        
        
            [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
            UTF-8
        
    

    
        ${LOG_HOME}/sys.log
        true
        
            ${LOG_HOME}/sys.log.%d
            12
        
        
            [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
            UTF-8
        
    

    
    
        
    
    
        
    

    
        
    


枚举LogFileName

public enum LogFileName {

    SYS_LOG("sysLog"),
    BIZ_LOG("bizLog");

    private String logFileName;

    LogFileName(String fileName) {
        this.logFileName = fileName;
    }

    public String getLogFileName() {
        return logFileName;
    }

    public void setLogFileName(String logFileName) {
        this.logFileName = logFileName;
    }

    public static LogFileName getAwardTypeEnum(String value) {
        LogFileName[] arr = values();
        for (LogFileName item : arr) {
            if (null != item && !item.logFileName.equals("")) {
                return item;
            }
        }
        return null;
    }
}

日志工具类LoggerUtils

public class LoggerUtils {
    public static  Logger Logger(Class clazz) {
        return LoggerFactory.getLogger(clazz);
    }

    /**
     * 打印到指定的文件下
     *
     * @param desc 日志文件名称
     * @return
     */
    public static Logger Logger(LogFileName desc) {
        return LoggerFactory.getLogger(desc.getLogFileName());
    }
}

日志打印

public class Application {

    private static final Logger sys_Log = LoggerUtils.Logger(LogFileName.SYS_LOG);
    private static final Logger biz_Log = LoggerUtils.Logger(LogFileName.BIZ_LOG);

    public static void main(String[] args) {
        sys_Log.info("我是系统日志");
        biz_Log.info("我是业务日志");
    }
}

输出结果

输入图片说明

biz.log:

[2018-03-26 18:23:22.791] INFO [restartedMain] Application.java:33 - 我是业务日志

sys.log:

[2018-03-26 18:23:22.791] INFO [restartedMain] Application.java:32 - 我是系统日志

这样我们针对不同的日志文件可以自定义进行处理了。

转载于:https://my.oschina.net/u/1000241/blog/1785167

你可能感兴趣的:(Logback不同业务日志写入不同文件)