91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

linux fprintf如何實現日志分級

小樊
87
2024-08-27 00:08:23
欄目: 智能運維

在 Linux 中,使用 fprintf 函數可以將日志信息輸出到文件或標準輸出(例如控制臺)

  1. 首先,定義一個日志級別枚舉類型:
typedef enum {
    LOG_LEVEL_DEBUG,
    LOG_LEVEL_INFO,
    LOG_LEVEL_WARNING,
    LOG_LEVEL_ERROR,
    LOG_LEVEL_FATAL
} LogLevel;
  1. 創建一個全局變量來存儲當前的日志級別:
LogLevel current_log_level = LOG_LEVEL_DEBUG;
  1. 編寫一個用于設置日志級別的函數:
void set_log_level(LogLevel level) {
    current_log_level = level;
}
  1. 編寫一個用于輸出日志的函數,該函數接受日志級別、格式化字符串和可變參數列表:
#include <stdarg.h>
#include<stdio.h>
#include <time.h>

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");
}
  1. 使用 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;
}

通過這種方法,你可以根據需要調整日志級別,從而控制輸出的日志信息。

0
开封县| 秦皇岛市| 海兴县| 余庆县| 清新县| 锡林浩特市| 兰州市| 东乡| 枣庄市| 鄂托克前旗| 福海县| 新乡市| 大城县| 乌拉特中旗| 乐安县| 吉隆县| 娱乐| 昭通市| 维西| 和顺县| 安庆市| 汝南县| 新安县| 新昌县| 休宁县| 化隆| 武宣县| 余江县| 罗源县| 通州区| 汕尾市| 友谊县| 雅江县| 宣城市| 鲁甸县| 文成县| 汶川县| 任丘市| 宜春市| 云南省| 博客|