|
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
|
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
|
|
|
|
|
|
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
|
|
|
|
|
|
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
|
|
|
|
|
|
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
|
|
|
|
|
|
<configuration scan="false" scanPeriod="10 seconds" debug="true">
|
|
|
|
|
|
<springProperty scope="context" name="logLevel" source="spring.logback.level"/>
|
|
|
|
|
|
<springProperty scope="context" name="APP_NAME" source="spring.logback.appName"/>
|
|
|
|
|
|
<springProperty scope="context" name="myMaxHistory" source="spring.logback.myMaxHistory"/>
|
|
|
|
|
|
<springProperty scope="context" name="myFileSize" source="spring.logback.myFileSize"/>
|
|
|
|
|
|
<springProperty scope="context" name="myTotalSizeCap" source="spring.logback.myTotalSizeCap"/>
|
|
|
|
|
|
<springProperty scope="context" name="logPath" source="spring.logback.logPath"/>
|
|
|
|
|
|
<contextName>${APP_NAME}</contextName>
|
|
|
|
|
|
<!-- 彩色日志 -->
|
|
|
|
|
|
<!-- 彩色日志依赖的渲染类 -->
|
|
|
|
|
|
<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="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%level){blue} %clr(${PID}){magenta} %clr([%thread]){orange} %clr(%logger){cyan} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
|
|
|
|
|
|
<!--非彩色日志输出格式-->
|
|
|
|
|
|
<property name="PATTERN"
|
|
|
|
|
|
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level 服务名称:${APP_NAME} %logger{36} - %msg%n"/>
|
|
|
|
|
|
|
|
|
|
|
|
<!--dev文件路径:src同级目录logs,如果上级目录不存在会自动创建-->
|
|
|
|
|
|
<property name="DEV_FILE_PATH" value="${logPath}/${APP_NAME}/"/>
|
|
|
|
|
|
<!-- pro文件路径 -->
|
|
|
|
|
|
<property name="PRO_FILE_PATH" value="${logPath}/${APP_NAME}/"/>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 控制台输出 -->
|
|
|
|
|
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
|
|
|
|
|
<encoder>
|
|
|
|
|
|
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%class:%line] %logger{50} - %m %n</pattern>-->
|
|
|
|
|
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
|
|
|
|
|
<pattern>${PATTERN}</pattern>
|
|
|
|
|
|
<!-- <charset>UTF-8</charset>-->
|
|
|
|
|
|
</encoder>
|
|
|
|
|
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
|
|
|
|
|
<level>INFO</level>
|
|
|
|
|
|
</filter>
|
|
|
|
|
|
</appender>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 按照每天生成输出日志文件 -->
|
|
|
|
|
|
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
|
|
|
|
<encoder>
|
|
|
|
|
|
<!--格式化输出:%d表示日期,%thread表示线程,%-5level:级别从左显示五个字符宽度,%logger{36}:logger是class的全名,后面的数字代表限制最长的字符,%msg:日志消息,%n换行符-->
|
|
|
|
|
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
|
|
|
|
|
</encoder>
|
|
|
|
|
|
<!--滚动策略按照时间滚动-->
|
|
|
|
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
|
|
|
|
<!-- rollover daily 文件名称 -->
|
|
|
|
|
|
<fileNamePattern>${DEV_FILE_PATH}/output-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
|
|
|
|
|
<maxHistory>${myMaxHistory}</maxHistory>
|
|
|
|
|
|
<maxFileSize>${myFileSize}</maxFileSize>
|
|
|
|
|
|
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
|
|
|
|
|
|
</rollingPolicy>
|
|
|
|
|
|
</appender>
|
|
|
|
|
|
|
|
|
|
|
|
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
|
|
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
|
|
|
|
<fileNamePattern>${DEV_FILE_PATH}/log_info_%d{yyyy-MM-dd_HH}.%i.txt</fileNamePattern>
|
|
|
|
|
|
<!-- 当文件总大小超过2GB,先删除30天内最早的文件。不会删除30天外的文件。 -->
|
|
|
|
|
|
<maxHistory>${myMaxHistory}</maxHistory>
|
|
|
|
|
|
<maxFileSize>${myFileSize}</maxFileSize>
|
|
|
|
|
|
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
|
|
|
|
|
|
</rollingPolicy>
|
|
|
|
|
|
<append>true</append>
|
|
|
|
|
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
|
|
|
|
|
<pattern>${PATTERN}</pattern>
|
|
|
|
|
|
<charset>utf-8</charset>
|
|
|
|
|
|
</encoder>
|
|
|
|
|
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
|
|
|
|
<level>INFO</level>
|
|
|
|
|
|
<onMatch>ACCEPT</onMatch>
|
|
|
|
|
|
<onMismatch>DENY</onMismatch>
|
|
|
|
|
|
</filter>
|
|
|
|
|
|
</appender>
|
|
|
|
|
|
|
|
|
|
|
|
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
|
|
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
|
|
|
|
<fileNamePattern>${DEV_FILE_PATH}/log_error_%d{yyyy-MM-dd_HH}.%i.txt</fileNamePattern>
|
|
|
|
|
|
<!-- 当文件总大小超过1GB,先删除10天内最早的文件。不会删除10天外的文件。 -->
|
|
|
|
|
|
<maxHistory>${myMaxHistory}</maxHistory>
|
|
|
|
|
|
<maxFileSize>${myFileSize}</maxFileSize>
|
|
|
|
|
|
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
|
|
|
|
|
|
</rollingPolicy>
|
|
|
|
|
|
<append>true</append>
|
|
|
|
|
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
|
|
|
|
|
<pattern>${PATTERN}</pattern>
|
|
|
|
|
|
<charset>utf-8</charset>
|
|
|
|
|
|
</encoder>
|
|
|
|
|
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
|
|
|
|
<level>ERROR</level>
|
|
|
|
|
|
<onMatch>ACCEPT</onMatch>
|
|
|
|
|
|
<onMismatch>DENY</onMismatch>
|
|
|
|
|
|
</filter>
|
|
|
|
|
|
</appender>
|
|
|
|
|
|
<!-- <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
|
|
|
|
|
|
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
|
|
|
|
|
|
<!-- <fileNamePattern>${DEV_FILE_PATH}/log_warn_%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
|
|
|
|
|
|
<!-- <!– 每产生一个日志文件,该日志文件的保存期限为10天 –>-->
|
|
|
|
|
|
<!-- <maxHistory>10</maxHistory>-->
|
|
|
|
|
|
<!-- <maxFileSize>20MB</maxFileSize>-->
|
|
|
|
|
|
<!-- <totalSizeCap>500MB</totalSizeCap>-->
|
|
|
|
|
|
<!-- </rollingPolicy>-->
|
|
|
|
|
|
<!-- <append>true</append>-->
|
|
|
|
|
|
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
|
|
|
|
|
|
<!-- <pattern>${PATTERN}</pattern>-->
|
|
|
|
|
|
<!-- <charset>utf-8</charset>-->
|
|
|
|
|
|
<!-- </encoder>-->
|
|
|
|
|
|
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
|
|
|
|
|
|
<!-- <level>WARN</level>-->
|
|
|
|
|
|
<!-- <onMatch>ACCEPT</onMatch>-->
|
|
|
|
|
|
<!-- <onMismatch>DENY</onMismatch>-->
|
|
|
|
|
|
<!-- </filter>-->
|
|
|
|
|
|
<!-- </appender>-->
|
|
|
|
|
|
<!-- <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
|
|
|
|
|
|
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
|
|
|
|
|
|
<!-- <fileNamePattern>${DEV_FILE_PATH}/log_debug_%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
|
|
|
|
|
|
<!-- <!– 当文件总大小超过1GB,先删除10天内最早的文件。不会删除10天外的文件。 –>-->
|
|
|
|
|
|
<!-- <maxHistory>${myMaxHistory}</maxHistory>-->
|
|
|
|
|
|
<!-- <maxFileSize>${myFileSize}</maxFileSize>-->
|
|
|
|
|
|
<!-- <totalSizeCap>${myTotalSizeCap}</totalSizeCap>-->
|
|
|
|
|
|
<!-- </rollingPolicy>-->
|
|
|
|
|
|
<!-- <append>true</append>-->
|
|
|
|
|
|
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
|
|
|
|
|
|
<!-- <pattern>${PATTERN}</pattern>-->
|
|
|
|
|
|
<!-- <charset>utf-8</charset>-->
|
|
|
|
|
|
<!-- </encoder>-->
|
|
|
|
|
|
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
|
|
|
|
|
|
<!-- <level>DEBUG</level>-->
|
|
|
|
|
|
<!-- <onMatch>ACCEPT</onMatch>-->
|
|
|
|
|
|
<!-- <onMismatch>DENY</onMismatch>-->
|
|
|
|
|
|
<!-- </filter>-->
|
|
|
|
|
|
<!-- </appender>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <appender name="SQL" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
|
|
|
|
|
|
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
|
|
|
|
|
|
<!-- <fileNamePattern>${DEV_FILE_PATH}/log-sql-%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
|
|
|
|
|
|
<!-- <!– 每产生一个日志文件,该日志文件的保存期限为3天 –>-->
|
|
|
|
|
|
<!-- <maxHistory>${myMaxHistory}</maxHistory>-->
|
|
|
|
|
|
<!-- <maxFileSize>${myFileSize}</maxFileSize>-->
|
|
|
|
|
|
<!-- <totalSizeCap>${myTotalSizeCap}</totalSizeCap>-->
|
|
|
|
|
|
<!-- </rollingPolicy>-->
|
|
|
|
|
|
<!-- <append>true</append>-->
|
|
|
|
|
|
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
|
|
|
|
|
|
<!-- <pattern>${PATTERN}</pattern>-->
|
|
|
|
|
|
<!-- <charset>utf-8</charset>-->
|
|
|
|
|
|
<!-- </encoder>-->
|
|
|
|
|
|
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
|
|
|
|
|
|
<!-- <level>DEBUG</level>-->
|
|
|
|
|
|
<!-- <onMatch>ACCEPT</onMatch>-->
|
|
|
|
|
|
<!-- <onMismatch>DENY</onMismatch>-->
|
|
|
|
|
|
<!-- </filter>-->
|
|
|
|
|
|
<!-- </appender>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!--异步输出-->
|
|
|
|
|
|
<!-- <appender name="DEBUG_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
|
|
|
|
|
|
<!-- <!– 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 –>-->
|
|
|
|
|
|
<!-- <discardingThreshold>0</discardingThreshold>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <!– 更改默认的队列的深度,该值会影响性能.默认值为256 –>-->
|
|
|
|
|
|
<!-- <queueSize>2048</queueSize>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <includeCallerData>true</includeCallerData>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <!– 添加附加的appender,最多只能添加一个 –>-->
|
|
|
|
|
|
<!-- <appender-ref ref="DEBUG"/>-->
|
|
|
|
|
|
<!-- </appender>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!--异步输出-->
|
|
|
|
|
|
<appender name="ERROR_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
|
|
|
|
|
|
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
|
|
|
|
|
|
<discardingThreshold>0</discardingThreshold>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
|
|
|
|
|
|
<queueSize>1024</queueSize>
|
|
|
|
|
|
|
|
|
|
|
|
<includeCallerData>true</includeCallerData>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 添加附加的appender,最多只能添加一个 -->
|
|
|
|
|
|
<appender-ref ref="ERROR"/>
|
|
|
|
|
|
</appender>
|
|
|
|
|
|
|
|
|
|
|
|
<!--异步输出-->
|
|
|
|
|
|
<!-- <appender name="WARN_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
|
|
|
|
|
|
<!-- <!– 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 –>-->
|
|
|
|
|
|
<!-- <discardingThreshold>0</discardingThreshold>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <!– 更改默认的队列的深度,该值会影响性能.默认值为256 –>-->
|
|
|
|
|
|
<!-- <queueSize>1024</queueSize>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <includeCallerData>true</includeCallerData>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <!– 添加附加的appender,最多只能添加一个 –>-->
|
|
|
|
|
|
<!-- <appender-ref ref="WARN"/>-->
|
|
|
|
|
|
<!-- </appender>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!--异步输出-->
|
|
|
|
|
|
<appender name="INFO_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
|
|
|
|
|
|
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
|
|
|
|
|
|
<discardingThreshold>0</discardingThreshold>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
|
|
|
|
|
|
<queueSize>2048</queueSize>
|
|
|
|
|
|
|
|
|
|
|
|
<includeCallerData>true</includeCallerData>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 添加附加的appender,最多只能添加一个 -->
|
|
|
|
|
|
<appender-ref ref="INFO"/>
|
|
|
|
|
|
</appender>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--异步输出-->
|
|
|
|
|
|
<!-- <appender name="SQL_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
|
|
|
|
|
|
<!-- <!– 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 –>-->
|
|
|
|
|
|
<!-- <discardingThreshold>0</discardingThreshold>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <!– 更改默认的队列的深度,该值会影响性能.默认值为256 –>-->
|
|
|
|
|
|
<!-- <queueSize>2048</queueSize>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <includeCallerData>true</includeCallerData>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <!– 添加附加的appender,最多只能添加一个 –>-->
|
|
|
|
|
|
<!-- <appender-ref ref="SQL"/>-->
|
|
|
|
|
|
<!-- </appender>-->
|
|
|
|
|
|
<!--
|
|
|
|
|
|
<logger>用来设置某一个包或者具体的某一个类的日志打印级别、
|
|
|
|
|
|
以及指定<appender>。<logger>仅有一个name属性,
|
|
|
|
|
|
一个可选的level和一个可选的addtivity属性。
|
|
|
|
|
|
name:用来指定受此logger约束的某一个包或者具体的某一个类。
|
|
|
|
|
|
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
|
|
|
|
|
|
还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
|
|
|
|
|
|
如果未设置此属性,那么当前logger将会继承上级的级别。
|
|
|
|
|
|
addtivity:是否向上级logger传递打印信息。默认是true。
|
|
|
|
|
|
-->
|
|
|
|
|
|
<!-- <logger name="dao" level="ERROR">-->
|
|
|
|
|
|
<!-- <appender-ref ref="SQL"/>-->
|
|
|
|
|
|
<!-- <appender-ref ref="STDOUT"/>-->
|
|
|
|
|
|
<!-- </logger>-->
|
|
|
|
|
|
|
|
|
|
|
|
<root level="${logLevel}">
|
|
|
|
|
|
<appender-ref ref="STDOUT"/>
|
|
|
|
|
|
<appender-ref ref="fileAppender"/>
|
|
|
|
|
|
<appender-ref ref="INFO_ASYNC_LOG"/>
|
|
|
|
|
|
<!-- <appender-ref ref="WARN_ASYNC_LOG"/>-->
|
|
|
|
|
|
<appender-ref ref="ERROR_ASYNC_LOG"/>
|
|
|
|
|
|
<!-- <appender-ref ref="DEBUG_ASYNC_LOG"/>-->
|
|
|
|
|
|
<!-- <appender-ref ref="SQL_ASYNC_LOG"/>-->
|
|
|
|
|
|
</root>
|
|
|
|
|
|
|
|
|
|
|
|
</configuration>
|