概述
Sl4j定义了常用的日志接口,而Log4j、Logback是两个实现了Sl4j的日志框架。Springboot的starter默认引入了Logback日志框架,可以直接使用,无需额外依赖
- 日志接口:Sl4j
- 日志框架:Log4j、Logback
- 推荐:Sl4j + Logback (Springboot默认引入)
Logback
Springboot中有两种配置方式,yml和logback-spring.xml,其中logback-spring.xml优先于yml方式
方式一:yml
- 简单 | 功能少
- 默认最大10MB分割
logging:
level:
com.fun: debug
file:
name: C:\\logs\system-center.txt
方式二:logback-spring.xml
- 复杂 | 功能多 | 支持压缩(能小100倍)
- 放到application.yml同级目录即可
- 格式参考: logback-spring.xml格式
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--##################################################常用变量######################################################-->
<!--日志路径-->
<property name="log.path" value="./logs" />
<!--##################################################固定常量######################################################-->
<!-- 引入spirng boot默认的logback配置文件 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!--自定义的pattern,没有颜色,推荐使用springboot默认pattern格式CONSOLE_LOG_PATTERN、FILE_LOG_PATTERN-->
<property name="funPattern" value="%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level [%15.15thread] %-40.40logger{39}: %msg%n"></property>
<!--日志名称,自动获取springboot的应用名-->
<springProperty scope="context" name="spring.application.name" source="spring.application.name"/>
<!--##################################################输出到控制台######################################################-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--##################################################输出到文件######################################################-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--实时日志-->
<file>${log.path}/${spring.application.name}.log</file>
<!--归档日志-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 后缀以".zip"或".gz"结尾,则开启日志文件压缩 -->
<fileNamePattern>${log.path}/${spring.application.name}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<!--单个最大日志-->
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>200MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
<!-- 日志文件保留最大时间滚动周期,比如当filaNamePattern中%d以为dd结尾时,则保留60天-->
<maxHistory>60</maxHistory>
<!-- 日志文件保留的总的最大大小-->
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--##################################################日志配置######################################################-->
<root level="info">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<logger name="com.fun.*" level="debugger" additivity="false">
<appender-ref ref="console" />
<appender-ref ref="file" />
</logger>
</configuration>
- Pattern
- 默认是右对齐,-是左对齐
- .的左侧数字代表最小宽度,.的右侧数字代表最大宽度
写法 | 左对齐 | 最小宽度 | 最大宽度 |
---|---|---|---|
%20logger | false | 20 | none |
%.30logger | NA | none | 30 |
%-20.30logger | true | 20 | 30 |