第1个回答 2022-07-09
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<springProperty scope="context" name="moduleName" source="spring.application.name"
defaultValue="application"/>
<springProperty scope="context" name="logsPath" source="logging.path"
defaultValue="logs"/>
<springProperty scope="context" name="hostname" source="eureka.instance.ip-address"
defaultValue="127.0.0.1"/>
<property name="log.base" value="${logsPath}" /> <!-- 日志路径,这里是相对路径,web项目eclipse下会输出到eclipse的安装目录下,如果部署到linux上的tomcat下,会输出到tomcat/bin目录 下 -->
<property name="log.moduleName" value="${moduleName}" /> <!-- 模块名称, 影响日志配置名,日志文件名 -->
<property name="log.max.size" value="100MB" /> <!-- 日志文件大小,超过这个大小将被压缩,或者第二天时,昨天的日志不过有没有超过这个大小也会压缩 -->
<!-- 参考SpringBoot默认的logback配置,增加了error日志文件 -->
<!-- org/springframework/boot/logging/logback/base.xml -->
<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="LOG_PATH" value="${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}"/>
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-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}}"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 控制台日志 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="file-info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<prudent>false</prudent>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily hours -->
<fileNamePattern>${log.base}/archive/${log.moduleName}-INFO-%d{yyyy-MM-dd}-%i.log.zip </fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>${log.max.size}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-4relative %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
<!-- 此日志文件只记录info级别,不记录大于info级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<level>ERROR</level>
</filter>
</appender>
<!-- 异步输出 -->
<appender name ="async-file-info" class= "ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold >0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref ="file-info"/>
</appender>
<!-- 日志总开关 -->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="async-file-info" />
<!--<appender-ref ref="FILE_ERROR" />-->
</root>
<!-- 日志过滤 -->
<!--<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>-->
<!--<logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>-->
<!--<logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>-->
<!--<logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>-->
<!--<logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>-->
<!--<logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>-->
<!--<logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>-->
</configuration>