logback自定義json日志輸出示例詳解
前言
先說(shuō)下樓主的使用場(chǎng)景吧,將程序的某些方法調(diào)用以json格式的內(nèi)容記錄到文件中,提供給大數(shù)據(jù)做數(shù)據(jù)分析用。當(dāng)然這個(gè)需求實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,通過(guò)aop攔截切面統(tǒng)一輸出內(nèi)容到文件即可。下面要介紹的就是通過(guò)logback日志體系以及l(fā)ogstash提供的json log依賴將數(shù)據(jù)以json格式記錄到日志文件的例子。
依賴的jar
logstash-logback-encoder : https://github.com/logfellow/logstash-logback-encoder
maven坐標(biāo)
<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>5.2</version> </dependency>
配置Appender節(jié)點(diǎn)
<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配置說(shuō)明:
encoder
:其他的所有配置logback該怎么配置就怎么配置,重點(diǎn)是logstash提供的LoggingEventCompositeJsonEncoder,一個(gè)json格式的編碼器。
jsonFactoryDecorator
:解決中文轉(zhuǎn)碼的問(wèn)題,不加這個(gè)的話中文會(huì)被編碼成ASCII碼輸出
providers
:json格式提供者,想要什么字段的json就定義什么,logevent中的類(lèi)型都可以在這里直接定義輸出,比如,timestamp,message,thread_name等,其他的自定義的字段的值可以通過(guò)MDC設(shè)置進(jìn)來(lái),格式就是%mdc{xx},其中xx就是你日志上下文MDC中設(shè)置的值,比如MDC.put("requestIp",requestIp);
配置logger節(jié)點(diǎn)
<logger name="buriedPoint" level="info" additivity="false"> <appender-ref ref="jsonLog"/> </logger>
logger配置說(shuō)明:
這里定義了name為buriedPoint的logger節(jié)點(diǎn),那么日志系統(tǒng)中,只會(huì)輸出定義為buriedPoint的日志,比如:
Logger logger = LoggerFactory.getLogger("buriedPoint");
最終實(shí)現(xiàn)的效果如下圖所示:
以上就是logback自定義json日志輸出示例詳解的詳細(xì)內(nèi)容,更多關(guān)于logback自定義json日志輸出的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring學(xué)習(xí)筆記2之表單數(shù)據(jù)驗(yàn)證、文件上傳實(shí)例代碼
這篇文章主要介紹了Spring學(xué)習(xí)筆記2之表單數(shù)據(jù)驗(yàn)證、文件上傳 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07spring+apollo動(dòng)態(tài)獲取yaml格式的配置方式
這篇文章主要介紹了spring+apollo動(dòng)態(tài)獲取yaml格式的配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Java class文件格式總結(jié)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java class文件格式總結(jié)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-06-06java中處理json各種各樣的轉(zhuǎn)換方法(推薦)
下面小編就為大家分享一篇java中處理json各種各樣的轉(zhuǎn)換方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11Spring Security6 最新版配置及實(shí)現(xiàn)動(dòng)態(tài)權(quán)限管理
Spring Security 在最近幾個(gè)版本中配置的寫(xiě)法都有一些變化,很多常見(jiàn)的方法都廢棄了,并且將在未來(lái)的 Spring Security7 中移除,因此又補(bǔ)充了一些新的內(nèi)容,重新發(fā)一下,供各位使用 Spring Security 的小伙伴們參考,需要的朋友可以參考下2024-03-03Spring動(dòng)態(tài)添加定時(shí)任務(wù)的實(shí)現(xiàn)思路
這篇文章主要介紹了Spring動(dòng)態(tài)添加定時(shí)任務(wù)的實(shí)現(xiàn)思路,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07java簡(jiǎn)單實(shí)現(xiàn)多線程及線程池實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了java簡(jiǎn)單實(shí)現(xiàn)多線程,及java爬蟲(chóng)使用線程池實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03