2013-02-01 104 views
1

我見過很多具有不同日誌級別的應用程序,您可以在其中使用指定的級別號碼啓用/禁用它們。應用程序日誌級別

例如,日誌級別1具有最多的細節並輸出很多細節。級別2具有較少的細節,級別3甚至不太詳細,級別4是完全禁用日誌。

你可以請教如何在C應用程序中實現?

回答

2

這一切都基本歸結爲日誌功能。它會是這樣的:

#define LOG_ALL  0 
#define LOG_DEBUG  1 
#define LOG_INFO  2 
#define LOG_WARN  3 
#define LOG_ERROR  4 
#define LOG_FATAL  5 
#define LOG_NEXTFREE 6 

static unsigned int threshold = LOG_WARN; 

void logIt (unsigned int level, char *message) { 
    if (level >= threshold) 
     puts (message); 
} 

換句話說,如果該消息的級別足以通過日誌記錄閾值,日誌功能將只輸出一條消息。你可以這樣稱呼它:

logIt (LOG_INFO, "process starting"); 
logIt (LOG_FATAL, "cannot read boot sector"); 

在默認的閾值(警告),你會看到後者,但不是前者。

您需要添加的所有內容都是動態修改閾值的方法,您可以影響記錄的內容。

void getAndChangeLevel (unsigned int newLevel) { 
    if (newLevel < LOG_NEXTFREE) 
     threshold = newLevel; 
} 

當然,還有各種各樣的其他功能可能是可取的,我試圖保持代碼的簡單說明你問的具體概念。

+0

如何將它與應用程序集成,它是否只是一直調用日誌功能,日誌功能將根據閾值來決定? – user1832809

+0

@ user1832809,是的,就是這樣。你的代碼所做的就是調用該函數,並指示該消息應記錄在什麼級別。日誌記錄功能本身決定是否達到閾值。 – paxdiablo