logback自定義json日志輸出示例詳解
前言
先說下樓主的使用場景吧,將程序的某些方法調用以json格式的內(nèi)容記錄到文件中,提供給大數(shù)據(jù)做數(shù)據(jù)分析用。當然這個需求實現(xiàn)起來很簡單,通過aop攔截切面統(tǒng)一輸出內(nèi)容到文件即可。下面要介紹的就是通過logback日志體系以及l(fā)ogstash提供的json log依賴將數(shù)據(jù)以json格式記錄到日志文件的例子。
依賴的jar
logstash-logback-encoder : https://github.com/logfellow/logstash-logback-encoder
maven坐標
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.2</version>
</dependency>配置Appender節(jié)點
<appender name="jsonLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${logging.path}/customerBuriedPoint.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logging.path}/customerBuriedPoint.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<jsonFactoryDecorator class="net.logstash.logback.decorate.CharacterEscapesJsonFactoryDecorator">
<escape>
<targetCharacterCode>10</targetCharacterCode>
<escapeSequence>\u2028</escapeSequence>
</escape>
</jsonFactoryDecorator>
<providers>
<pattern>
<pattern>
{
"timestamp":"%date{ISO8601}",
"userId":"%mdc{userId}",
"requestIp":"%mdc{requestIp}",
"event":"%mdc{event}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>appender配置說明:
encoder:其他的所有配置logback該怎么配置就怎么配置,重點是logstash提供的LoggingEventCompositeJsonEncoder,一個json格式的編碼器。
jsonFactoryDecorator:解決中文轉碼的問題,不加這個的話中文會被編碼成ASCII碼輸出
providers:json格式提供者,想要什么字段的json就定義什么,logevent中的類型都可以在這里直接定義輸出,比如,timestamp,message,thread_name等,其他的自定義的字段的值可以通過MDC設置進來,格式就是%mdc{xx},其中xx就是你日志上下文MDC中設置的值,比如MDC.put("requestIp",requestIp);
配置logger節(jié)點
<logger name="buriedPoint" level="info" additivity="false">
<appender-ref ref="jsonLog"/>
</logger>logger配置說明:
這里定義了name為buriedPoint的logger節(jié)點,那么日志系統(tǒng)中,只會輸出定義為buriedPoint的日志,比如:
Logger logger = LoggerFactory.getLogger("buriedPoint");最終實現(xiàn)的效果如下圖所示:

以上就是logback自定義json日志輸出示例詳解的詳細內(nèi)容,更多關于logback自定義json日志輸出的資料請關注腳本之家其它相關文章!
相關文章
mybatis 使用jdbc.properties文件設置不起作用的解決方法
這篇文章主要介紹了mybatis 使用jdbc.properties文件設置不起作用的解決方法,需要的朋友可以參考下2018-03-03
springboot+mybaties項目中掃描不到@mapper注解的解決方法
本文主要介紹了springboot+mybaties項目中掃描不到@mapper注解的解決方法,該報錯表明掃描不到Mapper層,具有一定的參考價值,感興趣的可以了解一下2024-05-05
SpringBoot使用CommandLineRunner接口完成資源初始化方式
這篇文章主要介紹了SpringBoot使用CommandLineRunner接口完成資源初始化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
Spring注解中@Autowired和@Bean的區(qū)別詳解
這篇文章主要詳細介紹了Spring注解中@Autowired和@Bean二者有什么區(qū)別,文中通過兩個注解的使用場景介紹了二者的區(qū)別,感興趣的同學可以參考閱讀2023-06-06
Java使用Knife4j優(yōu)化Swagger接口文檔的操作步驟
在現(xiàn)代微服務開發(fā)中,接口文檔的質量直接影響了前后端協(xié)作效率,Swagger 作為一個主流的接口文檔工具,雖然功能強大,但其默認界面和部分功能在實際使用中略顯不足,而 Knife4j 的出現(xiàn)為我們提供了一種增強的選擇,本篇文章將詳細介紹如何在項目中集成和使用 Knife4j2024-12-12

