SpringBoot整合Slf4j+logback日志框架

转载于

https://www.cnblogs.com/gavincoder/p/10090592.html

SpringBoot整合Slf4j+logback日志框架

一、Slf4j简单介绍与优势

1、介绍

  Slf4j的全称是Simple Loging Facade For Java(Java简单日志门面),它仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已。所以单独的Slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如apache的org.apache.log4j.Logger,jdk自带的java.util.logging.Logger等。

 

2、优势

  • 解耦客户端

  Slf4j只是一种接口,它本身并不关心你底层使用的是什么日志实现方案,所以它支持各种日志实现方案。简单的说,只要我们在类库中使用Slf4j打日志,那么底层使用什么日志实现方案是使用者决定的,怎么决定?依靠配置文件和jar库。

  • 提高效率

  Slf4j打印日志使用了{}占位符,这样就不会有字符串拼接操作,减少了无用ring对象的数量,节省了内存,也提高了时间效率,同时编码更加方便。

 3、log level

  Slf4j有四个级别的log level可供选择,级别从上到下由低到高,优先级高的将被打印出来。

  • Debug 
    简单来说,对程序调试有利的信息都可以debug输出

  • info 
    对用户有用的信息

  • warn 
    可能会导致错误的信息

  • error 
    顾名思义,发生错误的地方

 

二、SpringBoot整合Slf4j+logback

  logback和log4j以及log4j2三者,推荐使用logback,因为logback的效率显著高于log4j,而且logback也是Springboot推荐并且默认使用的日志系统。

1、配置依赖

复制代码

        
            ch.qos.logback
            logback-classic
        
        
            org.slf4j
            jcl-over-slf4j
        

复制代码

2、配置logback

在  src\main\resources 路径下创建logback.xml配置文件。

复制代码




    
    

    
    
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
    

    
    
        
            
            ${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log
            
            30
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
        
        
            10MB
        
    

    
    
    
    
    
    

    
    
    
    
    

    
    
        
        
    

复制代码

 

3、配置文件日志

系统日志全部写在一个文件会导致文件越来越大,这时候可以用文件日志来切分控制台日志,在logback.xml中添加:

复制代码


    /usr/local/log/app.log
    
        
        logback.%d{yyyy-MM-dd}.log
        
        30
    
    
        %d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n
    

复制代码

注:

logback.%d{yyyy-MM-dd}.log定义了日志的切分方式——把每一天的日志归档到一个文件中,30表示只保留最近30天的日志,以防止日志填满整个磁盘空间。同理,可以使用%d{yyyy-MM-dd HH:mm:ss SSS}来定义精确到分的日志切分方式。

 

三、Springboot应用使用Slf4j+logback

示例:

复制代码

@RestController
@RequestMapping("/Test")
public class HelloWorld {
    @Autowired
    private HelloService helloService;

    private final static Logger logger = LoggerFactory.getLogger(HelloWorld.class);

    @GetMapping("/hello")
    public String sayHello(){
        logger.info("hello Sfl4j + logback......");
        return helloService.sayHello();
    }

}

复制代码

运行效果:

 

你可能感兴趣的:(spring,boot)