tlog.c - ploot - simple plotting tools | |
git clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
--- | |
tlog.c (1502B) | |
--- | |
1 #include "log.h" | |
2 | |
3 #include <string.h> | |
4 | |
5 /* | |
6 * log.c - log to standard error according to the log level | |
7 * | |
8 * Instead of logging to syslog, delegate logging to a separate | |
9 * tool, such as FreeBSD's daemon(8), POSIX's logger(1). | |
10 * | |
11 * log_init() sets the log level to the "LOG" environment variable | |
12 * if set, or to 4 (log down to info included) otherwise. | |
13 */ | |
14 | |
15 #include <errno.h> | |
16 #include <stdlib.h> | |
17 #include <stdio.h> | |
18 | |
19 #define LOG_DEFAULT 2 /* info */ | |
20 | |
21 int log_level = -1; | |
22 | |
23 void | |
24 vlogf(int level, char const *flag, char const *fmt, va_list va) | |
25 { | |
26 char *env; | |
27 | |
28 if (log_level == -1) { | |
29 env = getenv("LOG"); | |
30 log_level = env ? atoi(env) : 0; | |
31 log_level = log_level > 0 ? log_level : LOG_DEFAULT; | |
32 } | |
33 | |
34 if (log_level < level) | |
35 return; | |
36 | |
37 fprintf(stderr, "%s: ", flag); | |
38 vfprintf(stderr, fmt, va); | |
39 | |
40 if (errno) | |
41 fprintf(stderr, ": %s", strerror(errno)); | |
42 errno = 0; | |
43 | |
44 fprintf(stderr, "\n"); | |
45 fflush(stderr); | |
46 } | |
47 | |
48 void | |
49 die(int exitcode, char const *fmt, ...) | |
50 { | |
51 va_list va; | |
52 | |
53 va_start(va, fmt); | |
54 vlogf(0, "error", fmt, va); | |
55 va_end(va); | |
56 exit(exitcode); | |
57 } | |
58 | |
59 void | |
60 error(char const *fmt, ...) | |
61 { | |
62 va_list va; | |
63 | |
64 va_start(va, fmt); | |
65 vlogf(0, "error", fmt, va); | |
66 va_end(va); | |
67 } | |
68 | |
69 void | |
70 warn(char const *fmt, ...) | |
71 { | |
72 va_list va; | |
73 | |
74 va_start(va, fmt); | |
75 vlogf(1, "warn", fmt, va); | |
76 va_end(va); | |
77 } | |
78 | |
79 void | |
80 info(char const *fmt, ...) | |
81 { | |
82 va_list va; | |
83 | |
84 va_start(va, fmt); | |
85 vlogf(2, "info", fmt, va); | |
86 va_end(va); | |
87 } | |
88 | |
89 void | |
90 debug(char const *fmt, ...) | |
91 { | |
92 va_list va; | |
93 | |
94 va_start(va, fmt); | |
95 vlogf(3, "debug", fmt, va); | |
96 va_end(va); | |
97 } |