日誌深刻理解

說明

不少軟件,系統都會有着本身的日誌,記錄日誌的主要目的是什麼呢。php

日誌能夠記錄誰誰誰在何時作了什麼事情,這些記錄可讓咱們知道用戶是怎麼操做系統報的錯誤。可用來找錯
也能夠經過一些日誌分析軟件去分析,最近用戶作那些操做比較多。搜索什麼關鍵詞比較多,有利於運營的策略制定。可用來分析laravel

例子

windows 事件查看器

windows 事件查看器裏的 windows日誌是一個很好的例子。
它分爲應用程序日誌,安全日誌,系統日誌數據庫

應用程序日誌:主要記錄系統軟件應用的錯誤
安全日誌:比較敏感的系統操做,如管理員登陸,修改密碼
系統日誌:系統相關的操做,如windows的服務操做json

全部的日誌都記錄了
錯誤級別,日期時間,來源,任務類型,系統用戶,計算機,日誌內容segmentfault

經過日誌記錄的內容,能夠輕易的得知軟件的錯誤是什麼。windows

它還提供了篩選和排序的功能,方便咱們去查找錯誤。安全

基礎概念

主要記錄的日誌內容服務器

錯誤級別
日期時間
來源
    IP
    項目名
任務類型
日誌內容
    操做內容的簡寫
    用戶的請求參數,可用 json

項目的日誌沒有windows日誌裏的那麼細,由於咱們面對的範圍比它小太多了,有些內容就沒有必要記錄併發

記錄格式高併發

json:這個能夠很好的區分數據是那一項裏面的,可是在直接查看上不是很直觀,須要取出轉格式,有些內容還會有換行的。
字符串:直接查看日誌文件比較直觀,可是若是須要導入分析工具時,須要寫正則一項項匹配出來,再導入

日誌存儲方式

數據庫
    我的十分不推薦的記錄方式,由於日誌只要有人訪問程序就會寫庫。訪問少倒無所謂,訪問大會大量消耗數據庫的性能
    寫數據庫慢,高併發的時候會鎖表
文件
    這個比數據庫好不少,也比較傳統的作法。會佔用系統IO,寫操做太多時會致使系統卡頓。不考慮被攻擊時可直接使用
    統計和查找沒有數據庫那麼功能豐富,能夠直接導至分析系統中進行操做。
    擴展:知道本身服務器的 IO 寫入速率,去估算每分鐘能夠寫多少日誌,
        假如服務器寫入速率是 100k/s
        其餘軟件預計佔用 30k/s
        去除容差 20k/s
        那可用的是 50k/s
        每分鐘可寫 51200b 的日誌
        再設每條日誌 500b
        那每分鐘級最多可寫102條日誌
內存
    讀寫速度很快,可是內存通常不會很大,廣泛4g以上。去除其餘應用的內存開銷,可用的內存並很少。能夠定時轉存到日誌文件中

除了數據庫不推薦外,使用文件仍是使用內存的可能經過寫入條數進行估算。使用什麼方式

程序實現

規範

php 的 [psr-3](https://laravel-china.org/docs/psr/psr-3-logger-interface/1607)

難點:

1. 要記日誌的地方那麼多,怎麼對其進行簡化操做
    經過URL匹配來記錄大概操做
    經過php異常處理記錄錯誤日誌,與 [上一期文章](https://segmentfault.com/a/1190000016824772) 關聯
    特殊的需求作直接記錄處理,如:搜索關鍵詞詞頻統計最近熱門關鍵詞

管理

elk: elsticsearch + logstash + kibana 比較流行的一套日誌分析系統
自制管理系統

寫在最後

日誌無論是對系統仍是對我的來講都是頗有必要存在的東西。

身邊的事物總會在某個時間點消逝,咱們須要珍惜,留有美好的記憶,去記錄它,直到某天返回翻看,回憶起當時留有的酸甜苦辣。

相關文章
相關標籤/搜索