1.日志级别
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
日志级别越低,打印日志信息范围越大;INFO级别的日志可以打印INFO < WARN < ERROR < FATAL的日志。
Debug日志级别可以打印出sql语句
2.普通日志文件配置
2.1 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
注意这个依赖中包含了spring-boot-starter-logging日志依赖
2.2 配置文件
logging:
file: /opt/logs/schoolmanager.log
level:
root: info
com.chuxin.schoolmanager.controller: debug
注意:
- logging.path和logging.file不可以同时配置,同时配置也只有logging.file起效
- 配置logging.path将会在指定文件夹下面生成spring.log文件,文件名字无法控制
- springboot默认的日志级别就是info,也就是root默认配置的就是info级别
-
3.自定义日志配置
3.1 步骤
导入pom依赖
- 在resource根目录下创建logback-spring.xml日志配置文件
- 在application.yml引入外部配置文件。
logging.config= classpath:logger-test.xml //引入外部配置文件
如果日志配置文件是logback-spring.xml的话就不用引入了,springboot会自动扫描到的。
注意:springboot项目可以分成两种方式启动,一种是tomcat启动,另一种是springboot使用内嵌的tomcat启动。使用tomcat启动时的自定义日志文件名称必须时logback-spring,负责的话时无法加载自定义日志的。
3.2 配置文件讲解
<?xml version="1.0" encoding="UTF-8"?>
<!--
日志级别从低到高分为 TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为 WARN,则低于 WARN 的信息都不会输出
scan:当此属性设置为 true 时,配置文件如果发生改变,将会被重新加载,默认值为true
scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当 scan 为 true 时,此属性生效。默认的时间间隔为 1 分钟。
debug:当此属性设置为 true 时,将打印出 logback 内部日志信息,实时查看 logback运行状态。默认值为 false。通常不打印
-->
<configuration scan="true" scanPeriod="2 seconds">
<!--property用于配置变量,可通过${LOG_PATH} 取对应的值-->
<property name="LOG_PATH" value="C:/Users/LQC/Desktop/logs"/>
<!--输出到控制台的日志追加器,当我们设置这个日志后,就会替代tomcat默认的控制台日志
如果我们不加载这个日志追加器的话,控制台就不会打印日志信息了-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--此日志 appender 是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!--这里要是设置成info的话,控制台输出的日志级只能输出info以上的-->
<!--<level>INFO</level>-->
</filter>
<!--日志消息格式与编码-->
<encoder>
<Pattern>%date [%-5p] [%thread] %logger{60} [%file : %line] %msg%n</Pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--输出到日志文件的日志追加器-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志存放的文件-->
<File>${LOG_PATH}/schoolmanager.log</File>
<encoder>
<!--日志消息格式与编码-->
<pattern>%date [%-5p] %thread %logger{60} [%file : %line] %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 添加.gz 历史日志会启用压缩 大大缩小日志文件所占空间 -->
<fileNamePattern>${LOG_PATH}/schoolmanager.log.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory><!-- 保留 30 天日志 -->
</rollingPolicy>
</appender>
<!--选择使用那个apperder日志追加器-->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
<!--单独配置节点,用来具体指明包的日志输出级别 如果不设置,则会交给root配置的appender处理-->
<!--将该包下的日志交给console的appender处理,additivity设为false表示不再向上传递,如果置为true,则root接到后会再打印一次。 -->
<logger name="com.chuxin.schoolmanager.mapper" level="DEBUGE" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</logger>
</configuration>
3.3 日志框架命名规范
通过上表可以看到,有些日志框架配置文件在命名时加了个”-spring”,这是因为如果不加”-spring”则该配置文件是由SpringBoot中集成的日志框架直接加载,加载该配置文件时绕过了SpringBoot,加上”-spring”之后的配置文件则是由SpringBoot加载的,这样我们就可以使用SpringBoot为我们提供的更高级的功能,比如profile功能:
1. <springProfile name="dev">
2. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
3. </springProfile>
4. <springProfile name="!dev">
5. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern>
6. </springProfile>
如果没加”-spring”,却使用了
no applicable action for [springProfile]
4.控制台乱码问题
tomcat启动项目有一个自己的控制台编码,springboot启动项目有一个内嵌tomcat的控制台编码。