Line data Source code
1 : #include <ctime>
2 : #include <unistd.h>
3 : #include <stdarg.h>
4 :
5 :
6 : #include "log.hpp"
7 :
8 :
9 : static struct {
10 : int verbose;
11 : } log_config;
12 :
13 :
14 27 : void log_init(int verbose)
15 : {
16 27 : log_config.verbose = verbose;
17 27 : }
18 :
19 :
20 0 : void _log_dump(const char* level, const char* filename, unsigned line, const char* functionname, int tid, const char *format, ...)
21 : {
22 0 : va_list args;
23 0 : va_start(args, format);
24 :
25 0 : char timestamp[72];
26 0 : time_t ltime;
27 0 : ltime=time(NULL);
28 0 : struct tm *tm;
29 0 : tm=localtime(<ime);
30 :
31 0 : sprintf(timestamp,"%04d-%02d-%02d %02d:%02d:%02d", tm->tm_year+1900, tm->tm_mon +1,
32 : tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
33 0 : fprintf(stderr, "%s [%s] ", timestamp, level);
34 :
35 0 : char msg[1024];
36 0 : vsnprintf(msg, 1024, format, args);
37 0 : fputs(msg, stderr);
38 0 : fputs("\n", stderr);
39 0 : fflush(stderr);
40 0 : va_end(args);
41 0 : }
42 :
43 :
44 125214 : void _log(const char* level, const char* filename, unsigned line, const char* functionname, int tid, const char *format, ...)
45 : {
46 125214 : if (!log_config.verbose && !strcmp("DEBUG", level)) return;
47 :
48 44440 : va_list args;
49 44440 : va_start(args, format);
50 :
51 44440 : char timestamp[72];
52 44440 : time_t ltime;
53 44440 : ltime=time(NULL);
54 44440 : struct tm *tm;
55 44440 : tm=localtime(<ime);
56 :
57 44440 : sprintf(timestamp,"%04d-%02d-%02d %02d:%02d:%02d", tm->tm_year+1900, tm->tm_mon +1,
58 : tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
59 :
60 44440 : printf("%s [%s] ", timestamp, level);
61 44440 : char msg[1024];
62 44440 : vsnprintf(msg, 1024, format, args);
63 :
64 44440 : puts(msg);
65 44440 : log_flush();
66 44440 : va_end(args);
67 : }
68 :
69 44440 : void log_flush()
70 : {
71 44440 : fflush(stdout);
72 44440 : }
|