1. 程式人生 > >muduo_base程式碼剖析之日誌類封裝

muduo_base程式碼剖析之日誌類封裝

日誌作用

Linux C下的程式設計師,很少使用gdb除錯程式,一般都使用日誌除錯程式
程式錯誤分為:編譯時錯誤、執行時錯誤(將errno儲存到日誌中)、邏輯錯誤(最難除錯,將程式的執行狀態都存到日誌)

  1. 開發過程中
    除錯錯誤
    更好的理解程式:執行流程
  2. 執行過程中
    診斷系統故障並處理
    記錄系統執行狀態

日誌級別

  1. TRACE:指出比Debug粒度更細的一些資訊事件(開發過程中使用)
  2. Debug:指出細粒度資訊事件對除錯應用程式是非常有幫助的(開發過程中使用)
  3. INFO:表明訊息在粗粒度級別上突出強調應用程式的執行過程
  4. WARN:系統能正常執行,但可能會出現潛在錯誤的情形
  5. ERROR:指出雖然發生錯誤事件,但仍然不影響系統的繼續執行
  6. 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

日誌滾動條件

  1. 檔案大小(每寫滿1G,換下一個檔案)
  2. 時間(每天零點新建一個日誌檔案,不論前一個檔案是否寫滿)