当前位置: 代码迷 >> 综合 >> springboot 中 logback 配置输出 json格式 的日志
  详细解决方案

springboot 中 logback 配置输出 json格式 的日志

热度:20   发布时间:2023-12-04 23:32:30.0

logback 配置输出 json格式 的日志

    • 配置json格式日志的原因
    • 使用的maven版本
    • logback-spring.xml
    • 使用
    • 效果:
    • 建议操作

配置json格式日志的原因

1、让日志的格式更具备有效性
问题:在elk中查询日志是springboot的默认格式,日志信息不明朗。
2、可以自定义一些阿里云的日志配置
问题:在阿里云的配置中查询非常麻烦,模糊搜索的条件的表达式需要学习时间

使用的maven版本

        <!--日志以json格式输出所需--><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.6</version></dependency><!--springboot日志-start--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency>

logback-spring.xml

 <include resource="org/springframework/boot/logging/logback/defaults.xml"/><springProperty scope="context" name="appName" source="spring.application.name" /><!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --><property name="CONSOLE_LOG_PATTERN"value="%d{yyyy-MM-dd HH:mm:ss.SSS} ${appName} %highlight(%-5level) %blue(%X{X-B3-ParentSpanId}) %yellow(%thread) %green(%logger) %msg%n" /><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!--<encoder><pattern>${
    CONSOLE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder>--><!--json-第一种方式:--><!--<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{
    "ip": "${ip}","app": "${appName}","level": "%level","trace": "%X{X-B3-TraceId:-}","class": "%logger","message": "%message","span": "%X{X-B3-SpanId:-}","parent": "%X{X-B3-ParentSpanId:-}","thread": "%thread","stack_trace": "%exception{10}"}</pattern></pattern></providers></encoder>--><!--json-第二种方式--><encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><pattern><pattern>{
    <!--服务名称-->"appName": "${appName}",<!--打印时间-->"time": "%date{yyyy-MM-dd HH:mm:ss.SSS}",<!--日志级别-->"level": "%level",<!--进程ID-->"pid": "${PID:-}",<!--线程名-->"thread": "%thread",<!--全限定类名-->"class": "%logger",<!--类中的哪个方法-->"method": "%method",<!--类中的第几行-->"line": "%line",<!--日志打印的信息-->"message": "%message",<!--堆栈异常信息-->"statck_trace":"%xEx"}</pattern></pattern></providers></encoder></appender><root level="info"><appender-ref ref="CONSOLE"/></root>
</configuration>

使用

1、 @Slf4j
在这里插入图片描述
2、LoggerFactory

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;Logger logger = LoggerFactory.getLogger(DiyEvenListener.class);

效果:

在这里插入图片描述

建议操作

使用第二种方式, LoggingEventCompositeJsonEncoder json格式的编码器。

参考:
官网: https://logback.qos.ch/manual/layouts.html
博文:http://www.kailing.pub/article/index/arcid/214.html

  相关解决方案