SpringBoot默认使用logback日志框架,其包在org.boot.logging下。
在需要对logback进行配置时,可创建xml文件在resources下即可生效。
下面是配置实例:
<?xml version="1.0" encoding="UTF-8"?>
<!--scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。-->
<!--scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。-->
<!--debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--如果想读取spring配置文件中的属性(application.properties),可以使用标签springProperty,使用${name}来使用变量值-->
<springProperty name="app.name" source="spring.application.name" defaultValue="mySpring"/>
<springProperty name="log.path" source="log.path" defaultValue="/data/log"/>
<!--用来定义变量值的标签,使用${name}来使用变量值-->
<property name="log.file" value="${log.path}/${app.name}"/>
<!--格式化输出:%d{yyyy-MM-dd HH:mm:ss.SSS}:表示日志输出时间 %thread:输出日志的进程名字 %-5level:级别从左显示5个字符宽度 %msg:日志消息 %n:是换行符-->
<property name="normal-pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-20thread] %-5level %logger{50}:%L - %msg%n"/>
<!--控制台输出可设置每个字段的颜色,方便本地调试查看-->
<property name="colorful-pattern" value="%red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green(【%thread】) %highlight(【%-5level】) %cyan(【%logger{50}:%L】) -- %boldMagenta(%msg%n)"/>
<!--输出到控制台-->
<appender name="consoleInfo" class="ch.qos.logback.core.ConsoleAppender">
<!--ThresholdFilter为系统定义的拦截器,用来过滤掉DEBUG级别以下的日志不输出到文件中-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${colorful-pattern}</pattern>
</layout>
</appender>
<!--输出到文件-->
<appender name="fileInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
的日志改名为今天的日期。即,<File> 的日志都是当天的。-->
<file>${log.file}.log</file>
<append>false</append>
<!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按照每天备份生成日志文件 %d可以包含一个时间格式,默认格式为yyyy-MM-dd -->
<fileNamePattern>${log.file}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!--每个文件大小限制64M,超过设置fileNamePattern中的%i会自增(默认是10M)-->
<maxFileSize>64MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--只保留最近90天的日志-->
<maxHistory>90</maxHistory>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出-->
<pattern>${normal-pattern}</pattern>
<!--字符编码-->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--level表示要打印日志的级别,addtivity表示消息是否向上级传递,默认为true-->
<!--如果logger标签中没有指定appender,则此logger本身不打印任何日志,会将级别为info及其以上的日志消息传递给root-->
<logger name="org.springframework" level="INFO" additivity="false"/>
<root level="DEBUG">
<appender-ref ref="consoleInfo"/>
<appender-ref ref="fileInfo"/>
</root>
</configuration>