导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
该依赖中包含了日志所需的依赖,所以只导入这个依赖足够了。
配置文件
文件建在resources文件夹下
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- property 用于配置变量,可通过${LOG_PATH}取对应的值 a -->
<!-- 定义日志的存储地址,不要在配置中使用相对路径 -->
<property name="LOG_PATH" value="D:/Java Code/testmaven06calculation/log/" />
<property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level line:%line %logger{50} %msg%n" />
<contextName>logback</contextName>
<!-- 输出到控制台,一个appender定义一种输出策略,可以定义多个a -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- filter中定义要输出的日志级别,默认是info -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<!-- 日志输出编码格式化 -->
<encoder>
<pattern>
${PATTERN}
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 输出到文件debug,日期滚动记录a -->
<appender name="logDebugFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<Prudent>true</Prudent> -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤 其他只留debug -->
<level>debug</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 滚动策略 按照时间滚动TimeBasedRollingPolicy每天会生成一个日志文件a -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件路径 定义了日志的切分方式 防止日志填满磁盘 -->
<fileNamePattern>
${LOG_PATH}/debug/log-debug-%d{yyyy-MM-dd}.log
</fileNamePattern>
<!-- 日志保留天数 -->
<maxHistory>7</maxHistory>
<!-- 用来指定日志文件的上下限大小 到了这个值就是删除旧日志 -->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<append>true</append>
<!-- 日志输出编码格式化 -->
<encoder>
<charset>GBK</charset>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!-- 输出到文件info,日期滚动记录a -->
<appender name="logInfoFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<Prudent>true</Prudent> -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤 其他只留info -->
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 滚动策略 按照时间滚动TimeBasedRollingPolicy每天会生成一个日志文件a -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件路径 定义了日志的切分方式 防止日志填满磁盘 -->
<fileNamePattern>
${LOG_PATH}/info/log-info-%d{yyyy-MM-dd}.log
</fileNamePattern>
<!-- 日志保留天数 -->
<maxHistory>7</maxHistory>
<!-- 用来指定日志文件的上下限大小 到了这个值就是删除旧日志 -->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<append>true</append>
<!-- 日志输出编码格式化 -->
<encoder>
<charset>GBK</charset>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!-- 输出到文件WARN,日期滚动记录a -->
<appender name="logWarnFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<Prudent>true</Prudent> -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤 其他只留info -->
<level>warn</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 滚动策略 按照时间滚动TimeBasedRollingPolicy每天会生成一个日志文件a -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件路径 定义了日志的切分方式 防止日志填满磁盘 -->
<fileNamePattern>
${LOG_PATH}/warn/log-warn-%d{yyyy-MM-dd}.log
</fileNamePattern>
<!-- 日志保留天数 -->
<maxHistory>7</maxHistory>
<!-- 用来指定日志文件的上下限大小 到了这个值就是删除旧日志 -->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<append>true</append>
<!-- 日志输出编码格式化 -->
<encoder>
<charset>GBK</charset>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!-- 输出到文件error,日期滚动记录a -->
<appender name="logErrorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<Prudent>true</Prudent> -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤 其他只留info -->
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 滚动策略 按照时间滚动TimeBasedRollingPolicy每天会生成一个日志文件a -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件路径 定义了日志的切分方式 防止日志填满磁盘 -->
<fileNamePattern>
${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.log
</fileNamePattern>
<!-- 日志保留天数 -->
<maxHistory>7</maxHistory>
<!-- 用来指定日志文件的上下限大小 到了这个值就是删除旧日志 -->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<append>true</append>
<!-- 日志输出编码格式化 -->
<encoder>
<charset>GBK</charset>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!-- 将上面两种策略添加到节点 -->
<root level="info">
<appender-ref ref="console" />
<appender-ref ref="logDebugFile" />
<appender-ref ref="logInfoFile" />
<appender-ref ref="logWarnFile" />
<appender-ref ref="logErrorFile" />
</root>
<!-- 开发环境 -->
<!-- <springProfile name="dev"> <root level="debug"> <appender-ref ref="logInfoFile"/> <appender-ref ref="logErrorFile"/> <appender-ref ref="console"/> </root> </springProfile> -->
<!-- 生产环境 -->
<!-- <springProfile name="pro"> <root level="INFO"> <appender-ref ref="logInfoFile"/> <appender-ref ref="logErrorFile"/> <appender-ref ref="console"/> </root> </springProfile> -->
</configuration>
在yml文件中写入logback-spring.xml路径
application.yml
logging:
config: src/main/resources/logback-spring.xml
level:
'[testmaven06calculation.com.cal.res]': DEBUG
日志配置文件中标签作用
标签 | 属性 | 描述 |
---|---|---|
configuration | 日志配置的根标签 | |
scan | 设置配置重载,当为true时,配置的变化会被日志框架重载 | |
scanPeriod | 设置监测配置更改时间 | |
debug | debug模式,为true时还会打印内部日志 | |
conversionRule | 彩色日志依赖的渲染类 | |
conversionWord | 渲染类的名称 | |
converterClass | 此配置对应的类地址 | |
property | 自定义变量,此参数可以在下面的配置中使用 数据加载时有顺序的,参数配置需要咋使用它之前完成 | |
name | 参数名称 | |
value | 参数值 | |
appender | 设置日志输出子节点 | |
name | 子节点名称 | |
class | 对应的类 ch.qos.logback.core.rolling.RollingFileAppender文件输出 ch.qos.logback.classic.filter.LevelFilter控制台输出 | |
layout | 配置控制台显示格式 | |
class | 格式配置的处理类 | |
filter | 过滤方法的配置 | |
class | 使用的过滤器 | |
evaluator | 过滤器使用ch.qos.logback.core.boolex.EventEvaluator完成不同逻辑的拦截处理 | |
class | 对应的EventEvaluator | |
onMatch | 当过滤器匹配的时候需要进行的操作 DENY:拒绝操作 NEUTRAL:此过滤器不处理交由下一个过滤器处理 ACCEPT:同意操作 | |
onMismatch | 当过滤器不匹配的时候需要进行的操作 DENY:拒绝操作 NEUTRAL:此过滤器不处理交由下一个过滤器处理 ACCEPT:同意操作 | |
rollingPolicy | 循环策略 | |
class | 循环策略对应的处理类 | |
FileNamePattern | 设置日志文件输出的文件名 | |
MaxHistory | 设置日志保留天数 | |
encoder | 用来设置日志的输出格式 | |
pattern | 设置输出格式的字符串 | |
charset | 设置字符集。控制台输出UTF-8,文件输出GBK | |
triggeringPolicy | 循环策略触发器 | |
class | 触发器对应的处理类 | |
MaxFileSize | 文件大小设置 | |
root | 根节点,可以通过appender-ref将子节点配置合并 | |
level | 日志基础级别设置,可选参数TRACE,DEBUG,INFO,WARN,ERROR,ALL,OFF | |
appender-ref | 引入子节点的操作 | |
ref | 子节点地址 |
日志输出格式
格式 | 说明 |
---|---|
%d{yyyy-MM-dd HH:mm:ss} | 日志输出时间 |
%thread | 输出日志的进程名字 |
%-5level | 日志级别,使用5个字符靠左对齐 |
%logger | 日志输出者名字 |
%msg | 日志消息 |
%n | 平台换行符 |