logback日志配置
日志用途:记录项目运行的问题
选择一个好的日志框架?
市面上的日志框架:JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…
左边选一个门面(抽象层)、右边来选一个实现;
日志门面: SLF4J;
日志实现:Logback;
SpringBoot:底层是Spring框架,Spring框架默认是用JCL;
SpringBoot选用 SLF4j和logback;
1)Springboot默认使用的日志框架是Logback, spring-boot-starter依赖包含了 spring-boot-starter-logging。
(2)日志输出级别(程序运行输出的信息级别,从严重错误到详细输出信息的分级)
从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL
日志输出级别
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
TRACE 级别最小,打印信息最为详细
(3)如何在系统中使用SLF4j ?
设置日志级别越低,打印的信息越详细,能够将日志级别高的打印出来,如果设置日志级别高,不能打印日志级别低的信息
如果你是开发测试,你可以设置为debug,或者要更详细一点可以设置为trace。
这些日志都是框架给我们设置写好的日志输出,我们只要使用就行了!
以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;
给系统里面导入slf4j的jar和 logback的实现jar
(4)两种配置方法
第一种方法:在application.yml中配置
第二种方法:在resources中添加logback-spring.xml即可配置日志。(详细自定义,用这种)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 属性-->
<!-- 设置日志输出的目录为d:/logs/springboot-logback -->
<property name="logDir" value="d:/logs/springboot-logback"/>
<!-- Linux下的设置:<property name="logDir" value="/var/tmp/springboot-logback"/> -->
<!-- 日志级别-->
<property name="logLever" value="INFO"/>
<!--<property name="logLever" value="WARN" /> -->
<!-- 默认的控制台日志输出,一般生产环境都是后台启动,这个没太大作用 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--<Encoding>UTF-8</Encoding> -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%black(Console-) %red(%d{yyyy-MM-dd HH:mm:ss})
%green([%thread]) %yellow(%-5level) %blue(%logger) - %cyan(%msg%n)
</pattern>
</layout>
</appender>
<!-- 配置文件轮转 -->
<appender name="logfile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<Encoding>UTF-8</Encoding> -->
<File>${logDir}/service.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${logDir}/service.%d{yyyy-MM-dd}.log.gz</FileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
</layout>
</appender>
<logger name="com.cjy.testpaging.mapper" level="DEBUG">
</logger>
<!-- root 默认日志配置 , 注意这里的级别哈!小心生产环境用DEBUG,压爆你的磁盘! -->
<root level="${logLever}">
<appender-ref ref="logfile"/>
<appender-ref ref="stdout"/>
</root>
</configuration>
(5)日志打印的建议
位置:程序的入口、异常捕获、重要信息(复杂的业务逻辑判断 )
级别:
info级别:帮助测试人员判断这是否是一个真正的bug,而不是自己操作失误造成的
debug级别:帮助开发人员分析定位bug所在的位置。
输出:[id, module, params, content](关键字,模块,参数,内容)