在 Linux 中,使用 fprintf
函数可以将日志信息输出到文件或标准输出(例如控制台)
- 首先,定义一个日志级别枚举类型:
typedef enum { LOG_LEVEL_DEBUG, LOG_LEVEL_INFO, LOG_LEVEL_WARNING, LOG_LEVEL_ERROR, LOG_LEVEL_FATAL } LogLevel;
- 创建一个全局变量来存储当前的日志级别:
LogLevel current_log_level = LOG_LEVEL_DEBUG;
- 编写一个用于设置日志级别的函数:
void set_log_level(LogLevel level) { current_log_level = level; }
- 编写一个用于输出日志的函数,该函数接受日志级别、格式化字符串和可变参数列表:
#include#include #include void log_message(LogLevel level, const char *format, ...) { if (level< current_log_level) { return; } const char *level_str[] = {"DEBUG", "INFO", "WARNING", "ERROR", "FATAL"}; time_t now; struct tm *timeinfo; char buffer[80]; time(&now); timeinfo = localtime(&now); strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", timeinfo); printf("[%s] [%s] ", buffer, level_str[level]); va_list args; va_start(args, format); vprintf(format, args); va_end(args); printf("\n"); }
- 使用
log_message
函数输出不同级别的日志:
int main() { log_message(LOG_LEVEL_DEBUG, "This is a debug message."); log_message(LOG_LEVEL_INFO, "This is an info message."); log_message(LOG_LEVEL_WARNING, "This is a warning message."); log_message(LOG_LEVEL_ERROR, "This is an error message."); log_message(LOG_LEVEL_FATAL, "This is a fatal message."); return 0; }
通过这种方法,你可以根据需要调整日志级别,从而控制输出的日志信息。