.. _program_listing_file_log.cpp: Program Listing for File log.cpp ================================ |exhale_lsh| :ref:`Return to documentation for file ` (``log.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include #include #include #include "log.hpp" static struct { int verbose; } log_config; void log_init(int verbose) { log_config.verbose = verbose; } void _log_dump(const char* level, const char* filename, unsigned line, const char* functionname, int tid, const char *format, ...) { va_list args; va_start(args, format); char timestamp[72]; time_t ltime; ltime=time(NULL); struct tm *tm; tm=localtime(<ime); sprintf(timestamp,"%04d-%02d-%02d %02d:%02d:%02d", tm->tm_year+1900, tm->tm_mon +1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); fprintf(stderr, "%s [%s] ", timestamp, level); char msg[1024]; vsnprintf(msg, 1024, format, args); fputs(msg, stderr); fputs("\n", stderr); fflush(stderr); va_end(args); } void _log(const char* level, const char* filename, unsigned line, const char* functionname, int tid, const char *format, ...) { if (!log_config.verbose && !strcmp("DEBUG", level)) return; va_list args; va_start(args, format); char timestamp[72]; time_t ltime; ltime=time(NULL); struct tm *tm; tm=localtime(<ime); sprintf(timestamp,"%04d-%02d-%02d %02d:%02d:%02d", tm->tm_year+1900, tm->tm_mon +1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); printf("%s [%s] ", timestamp, level); char msg[1024]; vsnprintf(msg, 1024, format, args); puts(msg); log_flush(); va_end(args); } void log_flush() { fflush(stdout); }