zoukankan      html  css  js  c++  java
  • 打印并输出 log/日志到文件(C++)

    #include <stdarg.h> 
    #define MAX_LEN 1024
    bool debug_mode;
    
    // 使用方法同 printf
    void lprintf(const char *fmt, ...) {
        static bool print_time = true; //是否要打印时间: 当 debug_mode 为真,且上一次是换行符结尾。
        char message[MAX_LEN];
        // 当前时间.
        time_t timer = time(NULL);
        strftime(message, 23, "[%Y-%m-%d %H:%M:%S] ", localtime(&timer));
        va_list args;
        va_start(args, fmt);
        vsnprintf (message + 22, MAX_LEN - 22, fmt, args);
        va_end(args);
    
        if (debug_mode) {
            printf("%s", message + 22);
        }
    
        int fd = open(LOG_FILE, O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR);
    
        if (fd == -1) {
            perror("open (log)");
        } else {
            if (print_time == false) {
                if (write(fd, message + 22, strlen(message + 22)) == -1)
                    perror("lprintf");
            } else {
                if (write(fd, message, strlen(message)) == -1)
                    perror("lprintf");
            }
    
            print_time = (message[strlen(message) - 1] == '
    ');
            close(fd);
        }
    }
    
  • 相关阅读:
    12月4日
    12月3日
    12月2日
    12月1日
    11月30日
    11月29日
    11月28日
    11月27日
    jquery mobile-按钮控件
    ap web
  • 原文地址:https://www.cnblogs.com/flipped/p/8838430.html
Copyright © 2011-2022 走看看