springboot 使用 slf4j + logback 记录日志

在写项目的时候,对于一些重要的信息,或者程序抛出的异常,我们一般都会用日志记录下来。方便后期排查问题。在springboot项目中,我一般使用 Slf4j+logback 作为日志框架。下面就简单介绍一下他们的使用

Slf4j

The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用。
使用:

yml简单配置 (用了logback-spring.xml就可以不需要这些配置)

logging:
  #生成的日志文件名
  file: doc/mybatis.log
  #相关包的日志级别
  level:
    top.lvjp.mybatis: info
    top.lvjp.mybatis.mapper: trace
  pattern:
    #控制台输出日志格式
    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} - %-5level [%thread] %logger - %msg%n"
public class Test{
    private final Logger log = LoggerFactory.getLogger(Test.class);
	
	public void test (String param)  {
		// 重要的有用的的数据才打印,不然影响程序运行效率
		log.info("接收到一个参数 param={}", param);
		try{
			// 假装对context操作时,抛出了一个异常
			throw new RuntimeException("test");
		} catch {
			// 打印相关的信息,以及异常的方法栈信息
			log.error("这里报错了, param={}", param, e);
		}
	}
}

Logback

LogBack 被分为3个组件
  • logback-core 提供了LogBack的核心功能,是另外两个组件的基础。
  • logback-classic 则实现了Slf4j的API,所以当想配合Slf4j使用时,需要将logback-classic加入classpath。
  • logback-access 是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口。
logback中三个重要概念:
  • Logger: 日志记录器,把它关联到应用对应的context上后,主要用于存放日志对象,定义日志类型,级别。
  • Appender: 指定日志输出的目的地,目的地可以是控制台,文件,或者数据库等
  • Layout: 负责把事件转换成字符串,格式化日志信息的输出

maven依赖

<dependency>
    <groupId>ch.qos.logbackgroupId>
    <artifactId>logback-classicartifactId>
    
dependency>

logback-spring.xml配置

SpringBoot官方推荐优先使用带有-spring的文件名作为日志配置(可以为它添加一些SpringBoot特有的配置项)。不过也可以通过logging.config属性自定义的名字:

# 指定配置文件
logging.config=classpath:logging-config.xml

这里使用 logback-spring.xml 作为文件名



<configuration scan="true" scanPeriod="6000" debug="false">
    
    <contextName>logbackcontextName>
    
    <property name="log.path" value="doc/logback" />

    
    
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARNlevel>
        filter>
        <layout class="ch.qos.logback.classic.PatternLayout">
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%npattern>
        layout>
    appender>

    <appender name="errorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <fileNamePattern>${log.path}/mybatis-%d{yyyy-MM-dd}.logfileNamePattern>
            
            <maxHistory>60maxHistory>
            
            <totalSizeCap>100MBtotalSizeCap>
        rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%npattern>
        encoder>
    appender>

    <appender name="infoFile" class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            
            <level>ERRORlevel>
            
            <onMatch>DENYonMatch>
            
            <onMismatch>ACCEPTonMismatch>
        filter>
    appender>

    
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="errorFile" />
        <appender-ref ref="infoFile" />
    root>
configuration>

你可能感兴趣的:(SpringBoot,java,spring,logback,slf4j)