2010-05-29 83 views
3

什麼設計模式可能適用於日誌記錄?這種情況通常使用什麼?任何好的教程?登錄屏幕和文件

我正在編寫一個使用C89和gcc 4.4.4的客戶端 - 服務器應用程序。我現在需要實現一些日誌記錄功能,它將在屏幕上顯示日誌消息以及登錄到文件。但是,我不想顯示所有日誌消息(警告,錯誤,嚴重,不可恢復,調試等)。也許我可以設置,這樣它將只顯示錯誤,沒有別的。例如,用戶可能對屏幕輸出中的調試消息不感興趣。

回答

4

一些提示/概念:

  1. 的機制,以產生具有無論是對日誌級別的參數或通過函數名隱含的日誌條目。
  2. 通常是一個printf樣式的格式字符串,後跟參數。
  3. 一個數據結構,用於從一個或多個生成它們的線程收集消息。
  4. 某種形式的時間戳。
  5. 處理收集的消息並執行輸出生成的後端線程。這可以是您配置顯示和/或寫入文件的級別的位置。
  6. vsnprintf()是一個函數,它使用可變數量的參數,並經常用於後端處理部分。

通常的想法是將字符串處理推遲到後臺線程,所以生成日誌的實際工作線程不會浪費時間進行字符串操作。但是,它使打印變量字符串變得困難,因爲在後臺處理它們時它們往往會超出範圍。所以在這些情況下,數值是首選。如果實時性不是問題,則可以通過日誌界面複製字符串,而不僅僅傳遞指針和數字參數值。

祝你好運。