Introduction
Introduction Statistics Contact Development Disclaimer Help
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 }
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.