當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
tail将输出的日志放到文件中_如何将Spring Boot应用中日志输出格式改为JSON?
生活随笔
收集整理的這篇文章主要介紹了
tail将输出的日志放到文件中_如何将Spring Boot应用中日志输出格式改为JSON?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
作者:DEV
出自:解道JDON
原文:jdon.com/55006
今天,我們有了一類稱為日志聚合系統(tǒng)的應用程序。當我們擁有大量微服務并且我們希望跨微服務跟蹤日志時,日志聚合很有用。
傳統(tǒng)的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日志記錄。另一種引用方式是結(jié)構(gòu)化日志,因為日志具有定義明確的結(jié)構(gòu),以后可以用來搜索。
以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>因此,讓我們假設(shè)您想將數(shù)據(jù)作為傳統(tǒng)日志記錄到控制臺,并將它們作為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>總結(jié)
以上是生活随笔為你收集整理的tail将输出的日志放到文件中_如何将Spring Boot应用中日志输出格式改为JSON?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的元类_Python中的元
- 下一篇: MATLAB静力学分析,锻造操作机静力学