基本配置
Spring Boot 默认使用 Logback 作为日志框架,在 application.properties 中进行配置:
# 日志目录
logging.path = /usr/local/temp/tao/logs
# 日志级别
logging.level.com.tao.mapper = DEBUG
logging.pattern.console = %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%F-%M\\(\\):%L] - %msg%n
根日志 logging.level.root 默认为 INFO,不建议在 application.properties 中修改它,推荐使用命令行参数开启根日志的 DEBUG 级别:
gradle bootRun --debug
java –jar demo.jar --debug
自定义配置
很多时候需要自定义日志,在 resources/logback-spring.xml 配置就可以了,会覆盖 Spring Boot 默认的和 application.properties 中的日志配置,下面是项目中的案例:
<?xml version="1.0"?>
<configuration scan="true" scanPeriod="30 seconds">
<!-- 日志目录 -->
<property name="logPath" value="${LOG_PATH:-logs}"/>
<!-- 日志格式 -->
<property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%F-%M\\(\\):%L] - %msg%n"/>
<!-- 控制台日志 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
<!-- 所有日志 -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${pattern}</pattern>
</encoder>
<file>${logPath}/log.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}/log_%d{yyyyMMdd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!-- 错误日志: 级别大于等于 WARN 的日志再次写入错误日志文件 -->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
<file>${logPath}/log_error.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}/log_error_%d{yyyyMMdd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!-- 根日志对象 -->
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
<appender-ref ref="error"/>
</root>
<!-- 控制每一个包的日志级别: 可以配置 application.properties 中的 logging.level.com.xtuer=DEBUG 进行配置 -->
<!-- <logger name="com.tao.mapper" level="${logLevel}"/>-->
<!-- <logger name="com.tao" level="${logLevel}"/>-->
</configuration>
通过自定义变量方便改变日志行为,logback-spring.xml 中使用变量:
- LOG_PATH 是 Spring Boot 自动创建的变量,为 application.properties 中的 logging.path 的值,如果没有则为未定义
- $ 表示 application.properties 中配置了 logging.path 的话使用它的值,否则使用默认值 logs (:- 后面的部分),详情可参考 LOG_PATH_IS_UNDEFINED
- 如果想使用 application.properties 中的变量,可以参考 Spring Boot 配置 Logback日志
- logger 的 level 也受 application.properties 里的 logging.level 控制,这样还可以从命令行参数在运行时根据需要进行控制
打印 URL
logging.level.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping = trace
评论区