clibs
Tiny but handy utility libraries for C
Loading...
Searching...
No Matches
clibs_logging.h
Go to the documentation of this file.
1
23
24#ifndef CLIBS_LOGGING_H
25#define CLIBS_LOGGING_H
26
27#include <stdio.h>
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
38#define CLIBS_LOG_LEVEL_NONE 0
39#define CLIBS_LOG_LEVEL_FATAL 1
40#define CLIBS_LOG_LEVEL_ERROR 2
41#define CLIBS_LOG_LEVEL_WARN 3
42#define CLIBS_LOG_LEVEL_INFO 4
43#define CLIBS_LOG_LEVEL_DEBUG 5
45
56#ifndef CLIBS_LOG_LEVEL
57#define CLIBS_LOG_LEVEL CLIBS_LOG_LEVEL_NONE
58#endif
59
66void clibs_set_output(FILE *out, FILE *err);
67
75FILE *clibs_get_out(void);
76
84FILE *clibs_get_err(void);
85
90#if CLIBS_LOG_LEVEL >= CLIBS_LOG_LEVEL_DEBUG
91#define CLIBS_LOG_DEBUG(fmt, ...) \
92 do { \
93 fprintf(clibs_get_err(), "[DEBUG] (%s:%d) " fmt "\n", \
94 __FILE__, __LINE__, ##__VA_ARGS__); \
95 } while (0)
96#else
97#define CLIBS_LOG_DEBUG(...) ((void)0)
98#endif
99
104#if CLIBS_LOG_LEVEL >= CLIBS_LOG_LEVEL_INFO
105#define CLIBS_LOG_INFO(fmt, ...) \
106 do { \
107 fprintf(clibs_get_err(), "[INFO] " fmt "\n", ##__VA_ARGS__); \
108 } while (0)
109#else
110#define CLIBS_LOG_INFO(...) ((void)0)
111#endif
112
117#if CLIBS_LOG_LEVEL >= CLIBS_LOG_LEVEL_WARN
118#define CLIBS_LOG_WARN(fmt, ...) \
119 do { \
120 fprintf(clibs_get_err(), "[WARN] " fmt "\n", ##__VA_ARGS__); \
121 } while (0)
122#else
123#define CLIBS_LOG_WARN(...) ((void)0)
124#endif
125
132#if CLIBS_LOG_LEVEL >= CLIBS_LOG_LEVEL_ERROR
133#define CLIBS_LOG_ERROR(fmt, ...) \
134 do { \
135 fprintf(clibs_get_err(), "[ERROR] " fmt "\n", ##__VA_ARGS__); \
136 } while (0)
137#else
138#define CLIBS_LOG_ERROR(...) ((void)0)
139#endif
140
147#if CLIBS_LOG_LEVEL >= CLIBS_LOG_LEVEL_FATAL
148#define CLIBS_LOG_FATAL(fmt, ...) \
149 do { \
150 fprintf(clibs_get_err(), "[FATAL] (%s:%d) " fmt "\n", \
151 __FILE__, __LINE__, ##__VA_ARGS__); \
152 } while (0)
153#else
154#define CLIBS_LOG_FATAL(...) ((void)0)
155#endif
156
157#ifdef __cplusplus
158}
159#endif
160
161#endif /* CLIBS_LOGGING_H */
FILE * clibs_get_out(void)
Returns the current thread-local output stream.
Definition clibs_logging.c:31
void clibs_set_output(FILE *out, FILE *err)
Sets thread-local output streams.
Definition clibs_logging.c:26
FILE * clibs_get_err(void)
Returns the current thread-local error stream.
Definition clibs_logging.c:35