muduo_base程式碼剖析之日誌類封裝
阿新 • • 發佈:2018-11-26
日誌作用
Linux C下的程式設計師,很少使用gdb除錯程式,一般都使用日誌除錯程式
程式錯誤分為:編譯時錯誤、執行時錯誤(將errno儲存到日誌中)、邏輯錯誤(最難除錯,將程式的執行狀態都存到日誌)
- 開發過程中
除錯錯誤
更好的理解程式:執行流程 - 執行過程中
診斷系統故障並處理
記錄系統執行狀態
日誌級別
- TRACE:指出比Debug粒度更細的一些資訊事件(開發過程中使用)
- Debug:指出細粒度資訊事件對除錯應用程式是非常有幫助的(開發過程中使用)
- INFO:表明訊息在粗粒度級別上突出強調應用程式的執行過程
- WARN:系統能正常執行,但可能會出現潛在錯誤的情形
- ERROR:指出雖然發生錯誤事件,但仍然不影響系統的繼續執行
- FATAL:指出每個嚴重的錯誤事件將會導致應用程式的退出
註解:muduo庫的日誌級別是INFO,可以修改logging.cc中的initLogLevel函式修改日誌級別,見下
Logger::LogLevel initLogLevel()
{
return Logger::TRACE; //日誌級別修改成TRACE
/*
if (::getenv("MUDUO_LOG_TRACE"))
return Logger::TRACE;
else if (::getenv("MUDUO_LOG_DEBUG"))
return Logger::DEBUG;
else
return Logger::INFO;
*/
}
#define LOG_TRACE if (muduo::Logger::logLevel() <= muduo::Logger::TRACE) \
muduo::Logger(__FILE__, __LINE__, muduo::Logger::TRACE, __func__).stream()
__FILE__ 在哪個檔案
__LINE__ 在哪一行
muduo::Logger::TRACE 什麼級別
__func__ 哪個函式
日誌滾動LogFile
日誌滾動條件
- 檔案大小(每寫滿1G,換下一個檔案)
- 時間(每天零點新建一個日誌檔案,不論前一個檔案是否寫滿)