springboog整合篇-springboot整合logback

Logback简介

logback是继log4j后的又一个日志框架,logback是springboot自带的日志框架,logback以严格的日志级别区分不同级别的日志(其他日志都是继承上一级的日志级别,例如:log4j2,log4j都是继承更高级别的日志),logback分为三个模块,logback-core,logback-classic,logback-access。

  • logback-core:logback-core是logback的核心模块,是logback-classic和的logback-access的基础。
  • logback-classic:实现了 slf4j API,配合 slf4j 使用,可以方便的切换其他日志框架。
  • logback-access:与Servlet容器(如Tomcat和Jetty)集成,提供了 HTTP 访问日志接口。

Springboot集成logback

之前说过,由于springboot自身是集成了logback,所以,在集成logback时只要springboot的自身依赖即可。

pom依赖


    
        org.springframework.boot
        spring-boot-starter-web
    

application.properties文件的配置

logging.config=classpath:logback-spring.xml

logback-spring.xml文件配置



    
    
        
            
            [%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n
        
    

    
    
        true
        ${LOG_HOME}/trace.log
        
            
            TRACE
            ACCEPT
            DENY
        
        
            ${LOG_HOME}/trace_%d{yyyy-MM-dd-HH}-%i.log.zip
            
            10 MB
            
            168
            
            10GB
        
        
            
            [%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n
            
            UTF-8
        
    

    
    
        true
        ${LOG_HOME}/debug.log
        
            DEBUG
            ACCEPT
            DENY
        
        
            ${LOG_HOME}/debug_%d{yyyy-MM-dd-HH}-%i.log.zip
            
            10 MB
            
            168
            
            10GB
        
        
            
            [%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n
            
            UTF-8
        
    

    
    
        true
        ${LOG_HOME}/info.log
            
        
            INFO
            ACCEPT
            DENY
        
        
            ${LOG_HOME}/info_%d{yyyy-MM-dd-HH}-%i.log.zip
            
            10 MB
            
            168
            
            10GB
        
        
            
            [%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n
            
            UTF-8
        
    

    
    
        true
        ${LOG_HOME}/warn.log
        
            WARN
            ACCEPT
            DENY
        
        
            ${LOG_HOME}/warn_%d{yyyy-MM-dd-HH}-%i.log.zip
            
            10 MB
            
            168
            
            10GB
        
        
            
            [%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n
            
            UTF-8
        
    

    
    
        true
        ${LOG_HOME}/error.log
        
            ERROR
            ACCEPT
            DENY
        
        
            ${LOG_HOME}/error_%d{yyyy-MM-dd-HH}-%i.log.zip
            
            10 MB
            
            168
            
            10GB
        
        
            
            [%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n
            
            UTF-8
        
    

    
    
        true
        ${LOG_HOME}/app.log
        
            ${LOG_HOME}/app_%d{yyyy-MM-dd-HH}-%i.log.zip
            
            10 MB
            
            168
            
            10GB
        
        
            
            [%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n
            
            UTF-8
        
    

    
    
    

    
        
        
        
        
        
        
        
    

将所有日志写入一个日志文件的配置



    
    
        
            
            [%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n
        
    

    
    
        true
        ${LOG_HOME}/app.log
        
            ${LOG_HOME}/app_%d{yyyy-MM-dd-HH}-%i.log.zip
            
            10 MB
            
            168
            
            10GB
        
        
            
            [%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n
            
            UTF-8
        
    

    
    
    

    
        
        
    

通过slf4j实现logback日志

public class LogUtil {

    /**
     * debug级别日志输出
     * @param clazz 类
     * @param msg 日志
     * @param params 其他参数
     */
    public static void debug(Class clazz, String msg, Object... params) {
        Logger logger = LoggerFactory.getLogger(clazz.getName());
        logger.debug(msg, params);
    }

    /**
     * trace日志输出
     * @param clazz 类
     * @param msg 日志
     * @param params 其他参数
     */
    public static void trace(Class clazz, String msg, Object... params) {
        Logger logger = LoggerFactory.getLogger(clazz.getName());
        logger.trace(msg, params);
    }

    /**
     * info级别日志输出
     * @param clazz 类
     * @param msg 日志
     * @param params 其他参数
     */
    public static void info(Class clazz, String msg, Object... params) {
        Logger logger = LoggerFactory.getLogger(clazz.getName());
        logger.info(msg, params);
    }

    /**
     * warn级别日志输出
     * @param clazz 类
     * @param msg 日志
     * @param params 其他参数
     */
    public static void warn(Class clazz, String msg, Object... params) {
        Logger logger = LoggerFactory.getLogger(clazz);
        logger.warn(msg, params);
    }

    /**
     * error级别日志输出
     * @param clazz 类
     * @param msg 日志
     * @param params 其他参数
     */
    public static void error(Class clazz, String msg, Object... params) {
        Logger logger = LoggerFactory.getLogger(clazz);
        logger.error(msg, params);
    }
}

slf4j实现的调用

void contextLoads() {
    LogUtil.info(this.getClass(), "this is info log");
}

日志输出

logback

总结

总体来说,logback是在一定程度上是比log4j2性能上差一点的,这也在我们之前的文章分析过,但是logback仍然为很多人所喜爱,个人认为有logback配置的确也比log4j2简单和logback的日志更加简化,而且对日志继承性要求很严格,这在一定的程度上方便问题查找以及减少不必要的日志。

参考文章

你可能感兴趣的:(java,springboot,logback)