Springboot整合日志框架logback
前言:
logback框架的主要作用就是把我们的微服务项目的日志进行持久化生成文件我们再通过ELK进行日志的管理等,下面是简单的日志框架的整合部署以及配置
logback框架的相关maven依赖:
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.1.0</version>
</dependency>
logback的xml文件,放在resources目录下:文件名称(logback-async.xml)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<springProperty scope="context" name="logging.path"
source="logging.file.path" />
<springProperty scope="context" name="logging.max-size"
source="logging.file.max-size" />
<springProperty scope="context" name="logging.max-history"
source="logging.file.max-history" />
<springProperty scope="context" name="logging.pattern"
source="logging.pattern.file" />
<springProperty scope="context" name="logging.level"
source="logging.pattern.level" />
<springProperty scope="context" name="logging.root"
source="logging.level.root" />
<springProperty scope="context" name="spring.application.ip"
source="spring.application.ip" />
<springProperty scope="context" name="spring.application.name"
source="spring.application.name" />
<springProperty scope="context" name="includeCallerData" source="logging.pattern.includeCallerData"/>
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<destination>192.168.78.1:4560</destination>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>${logging.pattern}</Pattern>
</layout>
</encoder>
</appender>
<appender name="infoAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${logging.path}/info/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>${logging.max-history}</MaxHistory>
<maxFileSize>${logging.max-size}</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>${logging.pattern}</pattern>
</layout>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="errorAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${logging.path}/error/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>${logging.max-history}</MaxHistory>
<maxFileSize>${logging.max-size}</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>${logging.pattern}</pattern>
</layout>
<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="asyncConsole" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<appender-ref ref="consoleAppender" />
<discardingThreshold>0</discardingThreshold>
<queueSize>5000</queueSize>
<includeCallerData>${includeCallerData}</includeCallerData>
<neverBlock>true</neverBlock>
</appender>
<appender name="asyncInfoFile" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>5000</queueSize>
<includeCallerData>${includeCallerData}</includeCallerData>
<neverBlock>true</neverBlock>
<appender-ref ref="infoAppender" />
</appender>
<appender name="asyncErrorFile" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>5000</queueSize>
<includeCallerData>true</includeCallerData>
<neverBlock>true</neverBlock>
<appender-ref ref="errorAppender" />
</appender>
<appender name="grpc-log" 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>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>
<logger name="com.dhcc.chl.bank.components.account.mapper" level='DEBUG'/>
<logger name="com.dhcc.chl.base.components.other.HttpInvokeComponent" level='DEBUG'/>
<logger name="com.dhcc.chl.bank.components.payservice.dao" level='DEBUG'/>
<logger name="com.dhcc" level='DEBUG'/>
<root level='${logging.root}' >
<appender-ref ref="asyncConsole" />
<appender-ref ref="asyncInfoFile" />
<appender-ref ref="asyncErrorFile" />
<appender-ref ref="grpc-log" />
</root>
</configuration>
logback的配置文件(可以放在application.properties下)
--logging.file.path=${user.name}/logs/${spring.application.name}-${server.port}
--logging.pattern.file=[${user.name}-|universalpay-|${spring.application.name}-|${spring.application.ip}:${server.port}-|%X{traceNo}-|%-12(%d{yyyy-MM-dd HH:mm:ss.SSS})-|%level-|%thread-|%c-|%L-|%tid-|%X{spanId}-|%X{apiCode}-|%X{API_CODE}-|%X{KIT_CODE}-%X{COMPONENT_ID}-|%msg]%n
--logging.file.max-size=50MB
--logging.file.max-history=30
--logging.pattern.level=info
--logging.pattern.includeCallerData=true
--logging.level.root=info