不少軟件,系統都會有着本身的日誌,記錄日誌的主要目的是什麼呢。php
日誌能夠記錄誰誰誰在何時作了什麼事情,這些記錄可讓咱們知道用戶是怎麼操做系統報的錯誤。可用來找錯
也能夠經過一些日誌分析軟件去分析,最近用戶作那些操做比較多。搜索什麼關鍵詞比較多,有利於運營的策略制定。可用來分析laravel
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 比較流行的一套日誌分析系統 自制管理系統
日誌無論是對系統仍是對我的來講都是頗有必要存在的東西。
身邊的事物總會在某個時間點消逝,咱們須要珍惜,留有美好的記憶,去記錄它,直到某天返回翻看,回憶起當時留有的酸甜苦辣。