springboot + logback
logback是springboot默认的日志框架,这篇文章用logback实现根据不同模块输出日志到不同的文件中.
首先分析不同模块输出不同的日志文件到磁盘中,那就可以理解为不同的模块放在不同的包路径下,按照不同包路径输出到不同的文件中.
1. 具体思路
- 自定义一个输出到文件的appender(理解为日志输出器)
- 配置logger,logger的name为需要打印日志的不同包路径
2. 具体实现
- 需要引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
或者
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
springboot默认用的就是logback日志所以不需要特定的引入logback的依赖包.
- 需要在resource文件夹下创建一个logback-spring.xml文件,(自定义的logger是属于局部配置,它的优先级高于全局配置(指root),可以理解为局部配置覆盖全局配置)
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--官方配置 start-->
<!--保留官方配置,方便使用官方配置的特性,参考:spring-boot-2.1.0.RELEASE.jar!\org\springframework\boot\logging\logback\base.xml-->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
<!--官方配置 end-->
<!--######自定义配置 start########-->
<!-- 自定义配置__单独输出到一个日志文件中 -->
<appender name="Biz_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}_BIZ.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}_BIZ.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
<maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory>
</rollingPolicy>
</appender>
<appender name="tr_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}_tr.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}_tr.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
<maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory>
</rollingPolicy>
</appender>
<!--指定包或者类的日志配置(这里是局部配置,它能覆盖全局配置)-->
<!-- 自定义配置__配置业务日志输出至单独的日志文件中 -->
<logger name="com.sq.ws.system.controller.UserController" additivity="false" level="debug">
<!-- 引用自定义的appender -->
<appender-ref ref="Biz_LOG"/>
<!-- 这里也引用控制台appender,才能在控制台中看到我们的日志 -->
<appender-ref ref="CONSOLE"/>
</logger>
<!--######自定义配置 end########-->
<logger name="com.sq.ws.system.controller.TrUserRoleController" additivity="false" level="debug">
<appender-ref ref="tr_log"/>
</logger>
</configuration>
- 最后在全局配置文件中指定log日志要输出的地址
application.properties
logging.config=classpath:logback-spring.xml
# 指定日志要输出的位置
logging.file.path=/Users/wangshuai/project/mes/mes-system-service/src/main/resources/
到此根据不同模块输出到不同的日志文件中已经完成,进入测试即可.
总结
学习了springboot默认的logback的输出不同模块的日志配置,下面还会学习一下log4j怎么实现日志的管理配置.