默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。并且默认spring Boot自动加载了Logback依赖,无需手动引用任何依赖.
日志级别优先级
- TRACE < DEBUG < INFO < WARN < ERROR < FATAL
logBack的公共配置
- 默认Spring Boot配置日志输出到控制台,并没有输出到日志文件
- 我们可以手动修改application.yml配置文件,新增内容如下:
注意:日志配置, path和file不能同时使用,如果要同时使用则logging.file生 效,logging.path失效logging: pattern: #日志格式化 console: "%d - %msg%n" path: /var/log/spring file: /var/log/spring/lxf.log #针对固定包下信息规定日志级别 level: com.example.readinglist: info
代码测试
- HelloWorld.java
package com.example.readinglist.controllers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorld { private final Logger logger = LoggerFactory.getLogger(HelloWorld.class); @GetMapping(value = "/hello") public String testHello() { //日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。 logger.trace("日志输出 trace"); logger.debug("日志输出 debug"); logger.info("日志输出 info"); logger.warn("日志输出 warn"); logger.error("日志输出 error"); return "hello world!"; } }
自定义xml文件详细配置logBack
- 自定义xml文件配置会覆盖掉application.yml中的logging相关配置
-
logback-spring.xml
配置文件放在src/main/resources
目录下,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logback-demo</contextName>
<!--<property name="logback.logdir" value="/home/lxf/test/logs"/>
<property name="logback.appname" value="app"/>-->
<!--application.yml 传递参数,不能使用logback 自带的<property>标签 -->
<springProperty scope="context" name="logback.appname" source="logback.appname"/>
<springProperty scope="context" name="logback.logdir" source="logback.logdir"/>
<!--输出到控制台 自定义配置 ConsoleAppender-->
<appender name="consoleLog1" class="ch.qos.logback.core.ConsoleAppender">
<!--展示格式 layout-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</pattern>
</layout>
<!--
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
-->
</appender>
<!--输出到日志记录到文件,自定义配置,该配置会忽略application.yml中的日志配置logging相关失效 -->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--如果只是想要 Info 级别的日志,只是过滤 info 还是会输出 Error 日志,因为 Error 的级别高,
所以我们使用下面的策略,可以避免输出 Error 的日志-->
<!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
的日志改名为今天的日期。即,<File> 的日志都是当天的。
-->
<File>${logback.logdir}/info.${logback.appname}.log</File>
<!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
<FileNamePattern>${logback.logdir}/info.${logback.appname}.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--只保留最近90天的日志-->
<maxHistory>90</maxHistory>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
<!--<totalSizeCap>1GB</totalSizeCap>-->
</rollingPolicy>
<!--日志输出编码格式化-->
<encoder>
<charset>UTF-8</charset>
<pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</pattern>
</encoder>
</appender>
<!--指定最基础的日志输出级别-->
<root level="INFO">
<!--appender将会添加到这个loger-->
<appender-ref ref="consoleLog1"/>
<!--<appender-ref ref="fileInfoLog"/>-->
</root>
<!-- 测试环境+开发环境. 多个使用逗号隔开. -->
<springProfile name="test,dev">
<logger name="com.example.readinglist" level="DEBUG" additivity="false">
<!--引用控制台输出样式-->
<appender-ref ref="consoleLog1"/>
<!--引用文件输出样式-->
<appender-ref ref="fileInfoLog"/>
</logger>
</springProfile>
<!-- 生产环境. -->
<springProfile name="prod">
<logger name="com.example.readinglist" level="INFO" additivity="false">
<appender-ref ref="consoleLog1"/>
<appender-ref ref="fileInfoLog"/>
</logger>
</springProfile>
</configuration>
- application.yml 配置文件内容
spring: #引入开发环境,在logback-spring.xml中不同环境,记录不同日志级别信息 profiles: active: dev #配置自定义日志变量信息,在logback-spring.xml中引用 logback: #日志路径 logdir: /home/lxf/test/logs #日志文件名 appname: lxf-spring-log-test.log
参考文章:
logback 配置详解(一)——logger、root
http://m.blog.csdn.net/inke88/article/details/75007649
slf4j+logback SLF4J和Logback日志框架详解
http://blog.csdn.net/qq_28893679/article/details/78327952
myslbatis输出sql语句配置