Springboot整合日志框架logback

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"?>
<!--<!DOCTYPE xml>-->
<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"/>
    <!--  脱敏配置    -->
    <!--<property scope="context" resource="sensitive.properties"/>-->
    <!--<conversionRule conversionWord="msg" converterClass="com.dhcc.service.commons.logging.SensitiveMessageConverter"> </conversionRule>-->
    <!-- 控制台设置 -->
    <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>
        <!--      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
        <!--         <level>${logging.level}</level>-->
        <!--      </filter>-->
    </appender>

    <!-- INFO -->
    <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>
        <!--      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
        <!--         <level>${logging.level}</level>-->
        <!--      </filter>-->
    </appender>

    <!-- ERROR -->
    <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>
            <!-- 超过50MB时,触发滚动策略 -->
            <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> <!-- default 20, means drop lower event when has 20% capacity remaining -->
        <appender-ref ref="consoleAppender" />
        <discardingThreshold>0</discardingThreshold>
        <queueSize>5000</queueSize>
        <includeCallerData>${includeCallerData}</includeCallerData>
        <neverBlock>true</neverBlock>
    </appender>
    <!--info异步输出到文件 -->
    <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>
    <!--error异步输出到文件 -->
    <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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值