应用程序日志级别

时间:2013-02-01 00:30:54

标签: c linux

我见过很多具有不同日志级别的应用程序,您可以使用指定的级别编号启用/禁用它们。

例如,日志级别1具有最多细节并输出大量详细信息。级别2的细节较少,级别3的细节较少,级别4则完全禁用日志记录。

请告知如何在C应用程序中实现它?

1 个答案:

答案 0 :(得分: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;
}

当然,有各种各样的其他功能可能是可取的,我试图保持代码简单,以说明您询问的特定概念。