日志的使用

一 什么是日志框架

  1.是一套能实现日志输出的工具包

  2.能够描述系统运行状态的所有时间和内容都可以算作日志

二 日志框架的能力

  1.定制输出能力

  2.定制输出格式

  3.携带上下文信息

  4.运行时选择性输出

  5.灵活的配置

  6.优异的性能

  这些特性都是System.out所不具备的

三 常见的日志框架

  日志框架分类:日志门面和日志实现

  日志门面:JCL,SLF4J,jboss-loggins

  日志实现:Log4j,Log4j2,Logback

  这么多框架我们使用哪一套呢,其实也简单,Log4j,Log4j2和Logback是同一个作者,作者认为Log4j太烂不想修改,所以直接重写了一个Logback。而Log4j2反而因为设计太超前,以至于很多性能我们平时都用不到,所以也不建议使用。SLF4J的作者也是Logback的作者,而且很多框架都使用了SLF4J + Logback的组合,因此它就是目前的最佳日志框架组合了

四 SLF4J和Logback的使用

  下面的测试代码都是使用idea编写的

  1.基本用法

//基于springboot的单元测试
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class LoggerTest {
    //获取日志实例
    private Logger logger = LoggerFactory.getLogger(LoggerTest.class);

    @Test
    public void test1() {
        //输出日志
        logger.debug("debug...");
        logger.info("info...");
        logger.error("error...");
    }

}

  该用法有一个很明显的缺陷就是每个需要日志输出的类都要写一次

private Logger logger = LoggerFactory.getLogger(LoggerTest.class);

   很麻烦,下面使用一种注解的方式来改进代码

  2.注解用法

  首先要添加lombok依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

  然后在类上添加@Slf4j注解(如果你idea版本过低会导致log变量找不到,需要安装lombok插件)

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
//添加该注解即可
@Slf4j
public class LoggerTest {

    @Test
    public void test2() {
        //日志对象名变为了log
        log.debug("debug...");
        log.info("info...");
        log.error("error...");          
    }
}

  3.日志中输出变量

@Slf4j
public class LoggerTest {
    @Test
    public void test3() {
        //一般写法
        String name = "logback";
        String password = "123";
        log.info("一般写法 name:" + name + ", password:" + password);

        //占位符写法,用{}占位符代替变量
        log.info("占位符写法 name:{}, password:{}", name, password);
    }
}

  4.logback的配置

    logback的配置可以分为属性文件配置和xml文件配置,前者配置简单,功能也简单,后者反之

    属性文件application.properties中简单配置

#日志输出格式配置
logging.pattern.console=%d - %msg%n
#配置日志路径
logging.path=/var/log/tomcat/
#配置日志路径下的日志文件名
logging.pattern.file=/var/log/tomcat/sell/
#配置日志级别
logging.level.root=debug
#配置类的日志级别
logging.level.top.pancras.SellApplication=error

  基于xml的更多配置参考官网和其他博客……

  https://logback.qos.ch/manual/configuration.html

  https://www.cnblogs.com/warking/p/5710303.html

原文地址:https://www.cnblogs.com/coffee9527/p/8956681.html