axzo-framework/axzo-logger-spring-boot-starter/src/main/resources/logback/logback-axzo.xml
2022-09-21 20:16:03 +08:00

124 lines
5.6 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<included>
<!-- 引用 Spring Boot 的 logback 基础配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<!-- spring变量 -->
<springProperty scope="context" name="appName" source="spring.application.name"/>
<define name="hostname" class="cn.axzo.framework.logger.HostNamePropertyDefiner"/>
<define name="LOG_PREFIX" class="cn.axzo.framework.logger.LogPrefixhPropertyDefiner"/>
<property name="LOG_FILE" value="${appName}.log"/>
<!--日志路径-->
<property name="LOG_PATH" value="${LOG_PREFIX}/${appName}/"/>
<!-- 日志最大的历史 7天 -->
<property name="MAX_HISTORY" value="7"/>
<!--默认日志输出模式-->
<property name="PATTERN_CONSOLE" value="%date{HH:mm:ss} %highlight(%-5level) [%X{ctxLogId}] [%15thread] %cyan([%class{36}#%M:%L]) %msg%n"/>
<property name="PATTERN_FILE" value="%date{yyyy-MM-dd HH:mm:ss} %-5level --- [%15thread] [%X{ctxLogId}] %logger: %msg%n"/>
<property name="PATTERN_SKWALKING" value="%d{yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%thread] [%tid] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<contextName>${appName}</contextName>
<!-- 控制台 Appender -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${PATTERN_CONSOLE}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 文件 Appender -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>${PATTERN_FILE}</pattern>
</layout>
</encoder>
<!-- 日志文件名 -->
<file>${LOG_PATH}/${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 滚动后的日志文件名 -->
<fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_PATH}/${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
<!-- 启动服务时,是否清理历史日志,一般不建议清理 -->
<cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
<!-- 日志文件,到达多少容量,进行滚动 -->
<maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
<!-- 日志文件的总大小0 表示不限制 -->
<totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-1GB}</totalSizeCap>
<!-- 日志文件的保留天数 -->
<maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}</maxHistory>
</rollingPolicy>
</appender>
<!-- 异步写入日志,提升性能 -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
<queueSize>256</queueSize>
<appender-ref ref="FILE"/>
</appender>
<!-- 接入了skywalking才配置该项 -->
<appender name="SKYWALKING" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>${PATTERN_SKWALKING}</Pattern>
</layout>
</encoder>
</appender>
<!-- 控制台输出LOGSTASH JSON日志 -->
<appender name="LOGSTASH" class="ch.qos.logback.core.ConsoleAppender" addtivity="false">
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<fieldName>@timestamp</fieldName>
<pattern>yyyy-MM-dd'T'HH:mm:ss.SSSx</pattern>
<timeZone>GMT+8</timeZone>
</timestamp>
<pattern>
<pattern>
{
"app":"${appName}",
"level":"%level",
"traceId":"%X{ctxLogId}",
"thread":"%thread",
"class":"%logger{40}",
"message":"%message",
"m":"#asJson{%message}",
"error_level":"%X{errorLevel}",
"error_type":"%X{errorType}",
"stack_trace":"%exception{20}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<!-- 本地环境 -->
<springProfile name="local">
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
<springProfile name="dev,test,test1,uat,pre,default">
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ASYNC"/>
<appender-ref ref="SKYWALKING"/>
</root>
</springProfile>
<!-- 其它环境 -->
<springProfile name="pre-new,master">
<root level="INFO">
<appender-ref ref="ASYNC"/>
<appender-ref ref="LOGSTASH"/>
<appender-ref ref="SKYWALKING"/>
</root>
</springProfile>
</included>