中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
合江县| 清新县| 榆社县| 迭部县| 沾益县| 灵川县| 曲周县| 红桥区| 襄樊市| 藁城市| 宿松县| 安塞县| 南昌市| 郧西县| 托里县| 晋城| 遂川县| 乌鲁木齐市| 怀安县| 上蔡县| 防城港市| 安新县| 和田县| 宽城| 弥渡县| 姚安县| 平江县| 胶州市| 涟水县| 古交市| 丹凤县| 西昌市| 全椒县| 潼关县| 上思县| 晋城| 宁南县| 铁岭市| 射洪县| 江西省| 隆德县|