作者:DEV

出自:解道JDON

原文:jdon.com/55006


今天,我们有了一类称为日志聚合系统的应用程序。当我们拥有大量微服务并且我们希望跨微服务跟踪日志时,日志聚合很有用。

传统的Java应用程序日志如下所示:

2020-09-17 21:56:10.740  INFO [Orders:restartedMain::] o.s.b.w.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''

使用下面方法对日志进行搜索:

cat application.log | grep <your-search>

有人想出了这种不同的方法,为什么在主要用于搜索时为什么不以更可搜索的格式存储日志。JSON碰巧很容易被搜索到,从而进行JSON日志记录。另一种引用方式是结构化日志,因为日志具有定义明确的结构,以后可以用来搜索。

以JSON格式显示的相同应用程序日志如下所示:

{"@timestamp": "2020-06-17T14:41:11.174-04:00","@version": "1","message": "Tomcat initialized with port(s): 8080 (http)","logger_name": "org.springframework.boot.web.embedded.tomcat.TomcatWebServer","thread_name": "restartedMain","level": "INFO","level_value": 20000
}

要以JSON格式记录日志,需要包含2个依赖项。如果您使用maven进行依赖性管理,则将包括以下依赖性

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.4</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version>
</dependency>

在这里,我们使用的是logstash-logback-encoder库

然后,我们可以使用以下代码段将json编码器配置为logback

<encoder class="net.logstash.logback.encoder.LogstashEncoder"><providers><timestamp><timeZone>EST</timeZone></timestamp><pattern><pattern>{"level": "%level","service": "orders","traceId": "%X{X-B3-TraceId:-}","spanId": "%X{X-B3-SpanId:-}","thread": "%thread","class": "%logger{40}","message": "%message"}</pattern></pattern><stackTrace><throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter"><maxDepthPerThrowable>30</maxDepthPerThrowable><maxLength>2048</maxLength><shortenedClassNameLength>20</shortenedClassNameLength><rootCauseFirst>true</rootCauseFirst></throwableConverter></stackTrace></providers>
</encoder>

因此,让我们假设您想将数据作为传统日志记录到控制台,并将它们作为json记录到文件,我们可以如下配置logback xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/console.xml"/><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [Orders:%thread:%X{X-B3-TraceId}:%X{X-B3-SpanId}] %logger{40} - %msg%n</pattern></encoder></appender><appender name="fileout"class="ch.qos.logback.core.rolling.RollingFileAppender"><File>./logs/orders.log</File><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><maxIndex>8</maxIndex><FileNamePattern>./logs/orders.log.%i</FileNamePattern></rollingPolicy><triggeringPolicyclass="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>128MB</MaxFileSize></triggeringPolicy><encoder class="net.logstash.logback.encoder.LogstashEncoder"><providers><timestamp><timeZone>EST</timeZone></timestamp><pattern><pattern>{"level": "%level","service": "orders","traceId": "%X{X-B3-TraceId:-}","spanId": "%X{X-B3-SpanId:-}","thread": "%thread","class": "%logger{40}","message": "%message"}</pattern></pattern><stackTrace><throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter"><maxDepthPerThrowable>30</maxDepthPerThrowable><maxLength>2048</maxLength><shortenedClassNameLength>20</shortenedClassNameLength><rootCauseFirst>true</rootCauseFirst></throwableConverter></stackTrace></providers></encoder></appender><root level="info"><appender-ref ref="fileout" /><appender-ref ref="stdout" /></root>
</configuration>

tail将输出的日志放到文件中_如何将Spring Boot应用中日志输出格式改为JSON?相关推荐

  1. springboot中使用websocket_在 Spring Boot 项目中使用 activiti

    作者:yawn Lau  链接:http://jvm123.com/2019/08/springboot-activiti.html springMVC配置: 1. 开始流程并"申请请假&q ...

  2. Spring Boot JPA中使用@Entity和@Table

    文章目录 默认实现 使用@Table自定义表格名字 在JPQL Queries中重写表格名字 Spring Boot JPA中使用@Entity和@Table 本文中我们会讲解如何在Spring Bo ...

  3. 在Spring Boot 项目中使用Spring AOP实现切面日志

    导语   大数据时代,数据来源是比较重要的.而日志作为用户操作.系统监控.业务分析等都比较重要的一个环节.能更好的使用日志显得尤为重要.那么在Spring Boot的项目中如何能更加高效的记录Cont ...

  4. spring boot配置logback日志

    spring boot配置logback日志 在上一篇spring boot入门里提过,Spring Boot默认的日志打印是logback,所以配置logback日志会很简单,但是也有注意的地方. ...

  5. 54. spring boot日志升级篇—logback【从零开始学Spring Boot】

    在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...

  6. 在Spring Boot测试中使用Testcontainer进行数据库集成测试

    在此博客文章中,我想演示如何在Spring Boot测试中集成Testcontainer以便与数据库一起运行集成测试. 我没有使用Testcontainers的Spring Boot模块. 如何与他们 ...

  7. spring boot—自定义logback日志配置

    自定义日志配置 spring boot2.2.4官方文档 logback中文文档    1)spring boot可以适应所有日志框架,只需在类路径下包含相应的依赖来激活各种日志系统.    2)sp ...

  8. mybatis 配置_配置Mybatis在Spring Boot工程中的整合

    配置Mybatis在Spring Boot工程中的整合包,设置mybatis的实体类别名,输出执行sql语句配置项. 分析: 添加启动器依赖: 配置Mybatis:实体类别名包,日志,映射文件等: 配 ...

  9. 【Spring Boot】Spring Boot Logging 示例 | 日志记录

    文章目录 logging.level | 设置日志级别 logging.file | 指定输出日志文件的路径和名称 logging.path | 指定输出日志文件的路径 logging.pattern ...

最新文章

  1. 干货丨人工智能、大数据领域从菜鸟到高手的晋级指南(经典长文,值得收藏)
  2. java注解,通过反射解析注解,模仿hibernate,获取sql语句。
  3. linux 解压war到root_部署War包到Tomcat根目录位置(Ubuntu/CentOS)
  4. Python进阶07 函数对象
  5. 简析并查集[C/C++]
  6. 线框图(demo草图)制作的总结
  7. 【期末】202I-2022 IT项目管理期末考试(广州大学)
  8. 关于 TypeScript 内 constructor signature 的一些失败尝试
  9. Backbone - create model
  10. 万丰科技机器人排名_机器人系统集成“7宗最”
  11. C#中事务的简单使用
  12. python中intersection用法_Python Set intersection() 方法
  13. 计算机网络原理第七章,北大计算机网络原理第七章.pdf
  14. 百度热力图和高德热力图对比
  15. java计算机毕业设计西藏民族大学论文管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  16. PowerDesigner画UML图
  17. numpy.meshgrid()绘制网格图
  18. 这三个自媒体平台,你都了解嘛?
  19. layui后台添加数据给php,layui怎么实现数据绑定
  20. HDUOJ 2859 Phalanx

热门文章

  1. Matlab给Ansys助攻
  2. 二维与三维之间的桥梁——点云
  3. Replace Type Code with State/Strategy(以State/Strategy取代类型码)
  4. hdfs 备份数配置_大数据||HDFS HA配置详解
  5. java 反射.问题_Java知识点总结(反射-反射机制性能问题)
  6. linux用u盘上传文件,linux如何挂载U盘和文件系统(或需要用到).doc
  7. 语言程序设计第4版黄洪艺_谭浩强《C程序设计》第4版网授精讲班【教材精讲+考研真题串讲】视频网课讲义课程资料...
  8. php 反射对象属性,php面向对象之反射功能的用法详解
  9. 基于java的rsa加密程序_RSA rsa加密程序,rsa java源码和 rsa的jsp Crypt_De algrithms 解密 238万源代码下载- www.pudn.com...
  10. spring-boot发送邮件失败 AuthenticationFailedException: 535 Authentication Failed