目录
- 前言
- logback-spring.xml 配置
前言
打印日志是一个系统的基本功能,系统出现异常可以通过查找日志弄清楚是什么原因,从而更加快速地定位问题,修复系统。
logback-spring.xml 配置
- 文件位置
- 具体配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/base.xml"/><jmxConfigurator /><!-- 当前模块名称 --><contextName>myAppName</contextName><!-- 设置日志文件第一层目录 --><property name="LOG_PATH" value="./logs"/><!--设置第二层目录--><property name="APPDIR" value="airport_admin"/><!-- 彩色日志 --><!-- 彩色日志依赖的渲染类 --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/><conversionRule conversionWord="wex"converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/><conversionRule conversionWord="wEx"converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/><!-- 彩色日志格式 --><property name="CONSOLE_LOG_PATTERN"value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!-- 日志记录器,日期滚动记录error日志 --><appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${LOG_PATH}/${APPDIR}/log_error.log</file><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 归档的日志文件的路径,例如今天是2023-07-25日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件归档到不同的目录。而2023-07-25的日志文件由fileNamePattern指定,%d{yyyyMMdd}-%d{HH:mm:ss}指定日期格式,%i指定索引 --><fileNamePattern>${LOG_PATH}/${APPDIR}/error/%d{yyyyMMdd}/${APPDIR}-%d{yyyyMMdd}-%d{HH:mm:ss}.%i.log</fileNamePattern><!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,命名日志文件,例如log-error-2023-07-23-10:25:35.0.log --><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>2MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>30</maxHistory><!-- 启动项目后清理历史日志,默认值为 false --><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><!-- 追加方式记录日志 --><append>true</append><!-- 日志文件的格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L [%thread] - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录error级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>error</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 日志记录器,日期滚动记录warn日志 --><appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${LOG_PATH}/${APPDIR}/log_warn.log</file><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 类似error配置 --><fileNamePattern>${LOG_PATH}/${APPDIR}/warn/%d{yyyyMMdd}/${APPDIR}-%d{yyyyMMdd}-%d{HH:mm:ss}.%i.log</fileNamePattern><!-- 类似error配置 --><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>2MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>30</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><!-- 追加方式记录日志 --><append>true</append><!-- 日志文件的格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L [%thread] - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录warn级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>warn</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 日志记录器,日期滚动记录info日志 --><appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${LOG_PATH}/${APPDIR}/log_info.log</file><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 类似error配置 --><fileNamePattern>${LOG_PATH}/${APPDIR}/info/%d{yyyyMMdd}/${APPDIR}-%d{yyyyMMdd-HH:mm:ss}.%i.log</fileNamePattern><!-- 类似error配置 --><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>20MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>30</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><!-- 追加方式记录日志 --><append>true</append><!-- 日志文件的格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger [%thread] - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录info级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>info</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!--encoder 默认配置为PatternLayoutEncoder--><encoder><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>utf-8</charset></encoder><!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>debug</level></filter></appender><!--myibatis log configure--><logger name="com.apache.ibatis" level="TRACE"/><logger name="java.sql.Connection" level="DEBUG"/><logger name="java.sql.Statement" level="DEBUG"/><logger name="java.sql.PreparedStatement" level="DEBUG"/><!-- 生产环境下,将此级别配置为适合的级别,以免日志文件太多或影响程序性能 --><!--<springProfile name="dev"></springProfile>可以使用这个标签实现不同环境不同日志级别<springProfile name="test"><root level="INFO"><appender-ref ref="FILE"/><appender-ref ref="STDOUT"/></root></springProfile>--><!-- 异步输出 --><appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>256</queueSize><!-- 添加附加的appender,最多只能添加一个 --><appender-ref ref="FILEINFO"/></appender><!--springProperty 可以读取配置文件中的属性 <file>logs/${logName}.log</file> 使用方法<springProperty scope="context" name="logName"source="spring.application.name" defaultValue="localhost"/>--><springProfile name="dev"><root level="INFO"><appender-ref ref="FILEERROR" /><appender-ref ref="FILEWARN" /><appender-ref ref="ASYNC" /><!-- 生产环境将请stdout,testfile去掉 --><!-- <appender-ref ref="STDOUT"/>--></root></springProfile><springProfile name="pro"><root level="INFO"><appender-ref ref="FILEERROR" /><appender-ref ref="FILEWARN" /><appender-ref ref="ASYNC" /><!-- 生产环境将请stdout,testfile去掉 --><!-- <appender-ref ref="STDOUT"/>--></root></springProfile>
</configuration>