php mysql日誌系統設計

2021-09-19 19:54:39 字數 1826 閱讀 9469

日誌系統的作用:

1、了解線上系統的執行狀態

2、快速準確定位線上問題

3、發現系統瓶頸

4、預警系統潛在風險

5、挖掘產品最大價值

6、……

設計目標:

1、支援高併發日誌寫入

2、億級訊息內容儲存

3、支援監控報警

4、分布式、高可用

儲存選擇:

mysql tokudb+redis

mysql tokudb是乙個支援事務的「新」引擎,有著出色的資料壓縮功能。經測試,壓縮後的資料只佔原資料大小的10%以下。

redis用來做佇列,解決日誌併發寫入的壓力。

字段設計:

id 主鍵

type 日誌型別

client_ip 客戶端ip

service_ip 伺服器ip

site 站點名

file_path 檔案路徑

name 日誌名稱

content 日誌內容(陣列需要json_encode)

cookie 當前的cookie內容(需要json_encode)

url 當前的url

params 當前的url引數(需要json_encode)

create_time 時間

notice 通知方式(對應通知型別的配置檔案)

日誌型別:

對於日誌級別的分類,有以下參考:

fatal — 表示需要立即被處理的系統級錯誤。當該錯誤發生時,表示服務已經出現了某種程度的不可用,系統管理員需要立即介入。這屬於最嚴重的日誌級別,因此該日誌級別必須慎用,如果這種級別的日誌經常出現,則該日誌也失去了意義。通常情況下,乙個程序的生命週期中應該只記錄一次fatal級別的日誌,即該程序遇到無法恢復的錯誤而退出時。當然,如果某個系統的子系統遇到了不可恢復的錯誤,那該子系統的呼叫方也可以記入fatal級別日誌,以便通過日誌報警提醒系統管理員修復;

error — 該級別的錯誤也需要馬上被處理,但是緊急程度要低於fatal級別。當error錯誤發生時,已經影響了使用者的正常訪問。從該意義上來說,實際上error錯誤和fatal錯誤對使用者的影響是相當的。fatal相當於服務已經掛了,而error相當於好死不如賴活著,然而活著卻無法提供正常的服務,只能不斷地列印error日誌。特別需要注意的是,error和fatal都屬於伺服器自己的異常,是需要馬上得到人工介入並處理的。而對於使用者自己操作不當,如請求引數錯誤等等,是絕對不應該記為error日誌的;

warn — 該日誌表示系統可能出現問題,也可能沒有,這種情況如網路的波動等。對於那些目前還不是錯誤,然而不及時處理也會變為錯誤的情況,也可以記為warn日誌,例如乙個儲存系統的磁碟使用量超過閥值,或者系統中某個使用者的儲存配額快用完等等。對於warn級別的日誌,雖然不需要系統管理員馬上處理,也是需要及時檢視並處理的。因此此種級別的日誌也不應太多,能不打warn級別的日誌,就盡量不要打;

info — 該種日誌記錄系統的正常執行狀態,例如某個子系統的初始化,某個請求的成功執行等等。通過檢視info級別的日誌,可以很快地對系統**現的 warn,error,fatal錯誤進行定位。info日誌不宜過多,通常情況下,info級別的日誌應該不大於trace日誌的10%;

debug — 這兩種日誌具體的規範應該由專案組自己定義,該級別日誌的主要作用是對系統每一步的執行狀態進行精確的記錄。通過該種日誌,可以檢視某乙個操作每一步的執 行過程,可以準確定位是何種操作,何種引數,何種順序導致了某種錯誤的發生。可以保證在不重現錯誤的情況下,也可以通過debug級別的日誌對問題進行診斷。需要注意的是,debug日誌也需要規範日誌格式,應該保證除了記錄日誌的開發人員自己外,其他的如運維,測試人員等也可以通過 debug日誌來定位問題;

1、seaslog

2、3、

php mysql 日誌 MySQL日誌管理

任何一種資料庫中,都有各種各樣的日誌。mysql也不例外,在mysql中有4種不同的日誌 分別錯誤日誌 二進位制日誌 查詢日誌和慢查詢日誌。這些日誌記錄著mysql資料庫不同方面的蹤跡。下文將介紹這4種不同的日誌作用和用途。一.錯誤日誌 錯誤日誌在mysql資料庫中很重要,它記錄著mysqld啟動和...

系統操作日誌設計

前言 我們在做企業管理系統時,有多多少少都有對資料的完整性有所要求,比如要求系統不能物理刪除記錄,要求新增每一條資料時都要有系統記錄 或者更新某條資料都需要跟蹤到變化的內容 或者刪除資料時需要記錄誰刪除了,何時刪除了,以便誤刪後可以通過系統的 功能來恢復誤刪的資料。我將這種功能稱為操作日誌 為什麼要...

系統操作日誌設計

前言 我們在做企業管理系統時,有多多少少都有對資料的完整性有所要求,比如要求系統不能物理刪除記錄,要求新增每一條資料時都要有系統記錄 或者更新某條資料都需要跟蹤到變化的內容 或者刪除資料時需要記錄誰刪除了,何時刪除了,以便誤刪後可以通過系統的 功能來恢復誤刪的資料。我將這種功能稱為操作日誌 為什麼要...