優(yōu)雅設(shè)計(jì)后臺(tái)操作日志

1、背景

在企業(yè)級(jí)應(yīng)用,我們經(jīng)常需要記錄后端用戶操作各種功能的日志,方便未來發(fā)現(xiàn)業(yè)務(wù)有問題,能通過用戶操作日志追湖全流程。此外,我們還可以通過統(tǒng)計(jì)用戶操作日志,分析某些功能點(diǎn)擊的次數(shù),判斯哪些功能經(jīng)常使用,那些功能不經(jīng)常使用其至可以下線通過這種量化的分析,對(duì)于產(chǎn)品未來的功能規(guī)劃也起到指導(dǎo)作用,所以優(yōu)雅的設(shè)計(jì)一個(gè)后臺(tái)操作日志功能,對(duì)于企業(yè)級(jí)系統(tǒng)必不可少。

2、應(yīng)用場(chǎng)景

使用場(chǎng)景

  • 1、規(guī)則類變更場(chǎng)景(比如活動(dòng)配置規(guī)則修改)、

  • 2、配置類變更場(chǎng)景(比如公共配置修改)

  • 3、敏感信息類變更場(chǎng)景(比如客戶信息修改)

以上場(chǎng)景,如果有變更,通常會(huì)對(duì)我們系統(tǒng)的業(yè)務(wù)產(chǎn)生直接的影響,如果人為失誤、有可能造成直接的經(jīng)濟(jì)損失,所以我們需要記錄每一筆操作日志。

設(shè)計(jì)方案注意點(diǎn)

  • 1、記錄后端操作日志必須與業(yè)務(wù)功能解耦,不能硬編碼耦合在一起,增加開發(fā)人員的工作量;

  • 2、后端操作日志必須記錄管理后臺(tái)操作的菜單、操作的功能、操作人、操作時(shí)間等重要核心的信息;

  • 3、后端操作日志異步入庫(kù),不能阻塞主業(yè)務(wù)流程;

  • 4、后端操作日志重要的信息支持全模糊查詢方便管理員快速查詢信息,比如:操作內(nèi)容字段;

3、實(shí)現(xiàn)方案

  • 1、底層base公共服務(wù)提供日志相關(guān)的服務(wù)(保存日志、查詢?nèi)罩?

  • 2、通過自定義注解+AOP攔載請(qǐng)求,自動(dòng)上報(bào)日志到base的日志服務(wù)

  • 3、通過引入guava的eventbus異步發(fā)布事件實(shí)現(xiàn)日志的異步入mysql庫(kù)。

  • 4、考慮到操作內(nèi)容字段內(nèi)容比較大,基于canal+kafka,異步將日志表記錄同步到es,通過全模糊查詢es,可快速查詢?nèi)罩居涗?。同時(shí)考慮到操作日志表比較大,每3個(gè)月歸檔日志表一次,保存mysql日志表查詢性能

4、架構(gòu)設(shè)計(jì)

后端日志組件架構(gòu)圖

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容