1

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

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

您能否建议如何在 C 应用程序中实现它?

4

1 回答 1

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;
}

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

于 2013-02-01T00:34:16.340 回答