微服務體系操作日誌如何記錄?
導讀 | 針對操作日誌,每個系統或企業經營業務領域不同、負責人知識面不同、以及系統等級不同,要求差異也很大,那如何在服務開發過程中,根據使用者自定義的需求進行統一記錄呢,本文將親身經歷進行講述,廢話不多說,我們開始! |
提到日誌 ,作為java開發人員,第一反應嚮導的應該都是log4j、logback等技術元件,但是在微服務體系中,系統進行拆分之後,形成多個模組之後,如何用統一的標準進行記錄操作日誌,業界沒有統一的標準,也沒有統一的元件進行記錄,原因主要是各業務系統對操作日誌的定義要求、定義級別不同,例如:
案例1:對使用者操作的所有記錄進行記錄,尤其是增刪改模型實體業務資料;
案例2:對使用者操作的所有記錄記錄進行記錄,尤其是操作時機、操作結果;
方案一:業務閘道器進行記錄。針對微服務分散式應用,前後端互動、系統之間互動,都是透過業務閘道器進行交易轉發。因此,可以在業務閘道器透過攔截器的方式進行記錄,這種記錄只能記錄操作時間、操作人、操作型別、操作結果、入參、出參等,無法記錄資料實體模型的變化情況。這種方案的各應用無需單獨實現,只需要在業務閘道器進行解析記錄即可,後期改造難度小、影響小;缺點無法記錄資料實體本身記錄,且模組資訊以及操作型別只能透過規範性進行約束。
方案二:在業務實體變更時進行記錄。這種記錄需要在開發時,透過監聽資料實體模型變化進行記錄,這需要在應用開發時就考慮,後期改造難度大,影響大。這種方案優點是可以記錄的很詳細,包括實體模型前後變化情況等,缺點是開發需要完全按照規範進行,並且微服務涉及多資料來源或需要引入訊息佇列概念,複雜度較高。
方案三:在具體操作方法時進行記錄。這種記錄方式可以透過自定義註解的方式進行,在註解中進行標記模組資訊及操作型別,然後透過AOP中解析註解中的引數進行記錄。這種方式優點是日誌記錄模組及操作資訊是透過手工設定,針對開發人員來說簡單,缺點是微服務涉及多資料來源或需要引入訊息佇列概念,整體架構較複雜。
針對三種方案,對於不同層次的實施團隊,選擇方式或許不同。其中,方案一即適用於後期補救方式記錄,也適用於統一入口方式記錄;方案二,適用於開發團隊技能較高,業務系統對操作日誌要求較高的團隊;方案三,適用於傳統團隊轉混合團隊使用。具體使用何種方案,可以根據實際情況進行選擇。正所謂“沒有最好的,只有最適合的”。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2712184/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何優雅地記錄操作日誌
- 如何優雅的記錄操作日誌?
- 如何優雅地記錄操作日誌?
- 如何記錄可讀性的操作日誌?
- thinkphp 利用中介軟體 實現日誌操作記錄PHP
- 操作日誌記錄(包括輸出至自定義日誌檔案)
- 一種簡化操作日誌記錄方案
- Swoft AOP 記錄使用者操作日誌
- iptables防火牆如何記錄日誌防火牆
- 微服務開發系列:如何列印好日誌微服務
- 欄位修改記錄操作日誌的實現
- NAS中如何檢視日誌記錄?
- 日誌記錄器
- ThinkPHP日誌記錄PHP
- spring-boot-route(十七)使用aop記錄操作日誌Springboot
- Laravel sql 日誌記錄LaravelSQL
- go-kit微服務:日誌功能Go微服務
- 微服務的全鏈路日誌微服務
- laravel如何利用中介軟體優雅的記錄請求日誌Laravel
- Windows服務使用log4net記錄日誌Windows
- 如何在專案中記錄日誌資訊?
- 如何定製.NET6.0的日誌記錄
- 日誌記錄模組logging
- monolog 日誌記錄器解析Mono
- 【微服務】docker使用記錄微服務Docker
- 如何自行給指定的SAP OData服務新增自定義日誌記錄功能
- 結構化日誌記錄 - 更好地理解系統
- laravelS 記錄accesslog日誌,服務慢查詢預警Laravel
- [提問交流]請問如何關掉日誌記錄
- 微服務體系-docker容器cpu記憶體管理微服務Docker記憶體
- Spring boot學習(六)Spring boot實現AOP記錄操作日誌Spring Boot
- 填報表怎麼跟蹤使用者操作,記錄日誌?
- (7)go-micro微服務zap日誌配置Go微服務
- 記錄騰訊雲使用日誌
- log4net日誌記錄
- SpringBoot記錄HTTP請求日誌Spring BootHTTP
- Rust 實現日誌記錄功能Rust
- .NET Core使用Nlog記錄日誌