我见过很多具有不同日志级别的应用程序,您可以使用指定的级别编号启用/禁用它们。
例如,日志级别1具有最多细节并输出大量详细信息。级别2的细节较少,级别3的细节较少,级别4则完全禁用日志记录。
请告知如何在C应用程序中实现它?
答案 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;
}
当然,有各种各样的其他功能可能是可取的,我试图保持代码简单,以说明您询问的特定概念。