日志框架實(shí)現(xiàn)數(shù)據(jù)采集分析和報(bào)警
大家好,我是賀賀,隨著課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)的來臨,不同專業(yè)的同學(xué)有不同的要求,比較常見的做一些應(yīng)用軟件,但是有些專業(yè)就比較變態(tài)了,需要做數(shù)據(jù)分析什么的,別說分析了,連數(shù)據(jù)的獲取都不會(huì)。
初識(shí)日志
說起來日志,算是老朋友了,在公司實(shí)習(xí)的時(shí)候,做的就是日志的采集和分析工作,對ERROR的信息也會(huì)做出通知的功能,例如通過郵箱的通知。當(dāng)時(shí)用的是logback+slf4j的日志框架。
日志框架的故事
有很多關(guān)于日志的框架,早期有JUL,這一款是JDK提供的,還有l(wèi)og4j,這是Apache提供的。當(dāng)時(shí)這兩款都比較常用,有些公司用JUL,有些公司用log4j,這就使程序員很不方便了,需要學(xué)兩套日志框架,于是,后來出來了一個(gè)叫做JCL的東西,是Apache提供的一套通用日志API,也就是只需學(xué)這一個(gè),就可以去操作上面那兩個(gè)框架了,簡直就是完美。但世界總是沒那么簡單,后來在Apache的那位做日志的大佬不干了,自己出來又搞了一個(gè)名字叫做logback的日志框架,由于大家伙都在用JCL這個(gè)通用API,而且很多項(xiàng)目都是之前的老框架,所以,logback也沒有火起來,但是大佬就是大佬,這孩子又搞了一個(gè)slf4j,也是一個(gè)通用API,不僅可以適應(yīng)自己的logback,而且可以兼容那兩款老的框架(JUL和log4),關(guān)鍵是slf4j還很好用,隨著時(shí)間的推移,slf4j+logback越來越火了。Apache也不服輸,模仿logback搞出來一個(gè)log4j2,并且適配那位大佬的通用API(slf4j),后來呀log4j2+slf4j也慢慢的起來了,而之前的那一套JCL通用API慢慢的也涼了,應(yīng)該沒涼透。最近有新聞?wù)flog4j2出bug了,不知真假,不管它,今天主要介紹原汁原味的大佬出品logbak+slf4j。
通用API slf4j
slf4j本身是沒有什么日志功能的,它只是提供了一個(gè)通用的API,在用它的時(shí)候,需要一個(gè)日志框架結(jié)合使用,可謂是男女搭配干活不累,對了,slf4j還可以搭配多個(gè)日志框架,例如slf4j+logback+log4j2,對于程序員來說,不用管它結(jié)合多少了日志框架,只需掌握slf4j這一套API就可以操縱它的后宮了。這里給出他的maven依賴

后宮一姐 logback
這個(gè)日志框架,也是我當(dāng)時(shí)公司所用到的,這個(gè)日志框架,可以以不同的方式進(jìn)行輸出日志,你只需簡單的配置即可,而且網(wǎng)上很多模板,可能這就是生態(tài)吧,先把他的依賴導(dǎo)入。

導(dǎo)入之后,按套路來說,應(yīng)該是去配置,但是我不想配,不配置就用默認(rèn)的,咱先跑一下子。

我們可以清楚的看到,trace沒有打印,為什么呢,因?yàn)槿思夷J(rèn)就不打印,而且我們可以看到控制臺(tái)輸出的有時(shí)間、main、ERROR、包等信息,為什么是這些信息呢,也是因?yàn)槟J(rèn),下面就嘗試著改改這些默認(rèn)的東西,,首先我們要在resources下創(chuàng)建一個(gè)
lockback.xml文件。
上面這張圖,主要配置了日志的輸出格式,以及輸出的位置和日志輸出級別。
logback配置數(shù)據(jù)庫
接下來是重頭戲,也就是如何把這些日志保存到數(shù)據(jù)庫中,官方給出了一套解決方案,我們只需要自己配置一下要連接的數(shù)據(jù)庫,然后通過官方指定的表進(jìn)行建表格就可以了,這里給出部分創(chuàng)建表的腳本。這個(gè)表也是核心的表。

接下來就是在logback里配置數(shù)據(jù)庫了。

當(dāng)數(shù)據(jù)庫配置好之后,執(zhí)行代碼,可以看到數(shù)據(jù)庫中就出現(xiàn)了日志

數(shù)據(jù)采集、通知、分析思路
基于以上操作,我們就完成了對項(xiàng)目中的日志的采集工作,并順利的把他們存儲(chǔ)到了數(shù)據(jù)庫中,接下來,我們可以通過對數(shù)據(jù)庫的操作,把這些數(shù)據(jù)以前端的形式展示出來,也就是進(jìn)行可視化,如果你還想加一個(gè)通知,可以通過對日志進(jìn)行解析,例如,找到有error的日志,并把這條日志以郵箱的形式推送給程序員,達(dá)到報(bào)警的效果這樣以來,就實(shí)現(xiàn)了一個(gè)對項(xiàng)目的監(jiān)控功能,同時(shí)也差不多符合我們的作業(yè),即采集數(shù)據(jù)、分析數(shù)據(jù),另外還多了個(gè)報(bào)警功能。
白嫖黨必讀
為了大家的閱讀體驗(yàn),上面的代碼是以截圖的形式給出的,有些代碼沒有全部展示,如果有需要代碼或者有任何疑問,可通過工眾號【賀賀學(xué)編程】,進(jìn)行私信。
