-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathlogging.h
46 lines (35 loc) · 1.13 KB
/
logging.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#ifndef LOGGING_H
#define LOGGING_H
#include "common.h"
#include "cli.h"
#include <stdio.h>
#include <errno.h>
#include <err.h>
#include <string.h>
#include <inttypes.h>
#include <stdlib.h>
enum loglevel {
LL_UNKNOWN,
LL_ERROR,
LL_WARN,
LL_INFO,
LL_DEBUG,
};
#define LOG_LEVEL_ISVALID(l) ((l <= LL_DEBUG) && (l >= LL_ERROR))
typedef uint8_t loglevel_t;
extern loglevel_t log_level;
extern const char *log_levelnames[];
#define LOG_OK(level) ((level) <= log_level)
#define ERROR(...) warn(__VA_ARGS__)
#define ERRORX(...) err(EXIT_FAILURE, __VA_ARGS__)
#define WARN(...) if LOG_OK(LL_WARN) warn(__VA_ARGS__)
#define INFO(fmt, ...) if LOG_OK(LL_INFO) printf(fmt N, ## __VA_ARGS__)
#define DEBUG(fmt, ...) if LOG_OK(LL_DEBUG) \
printf("%03d:%s -- " fmt N, __LINE__, __FUNCTION__, ## __VA_ARGS__)
#define CHK(...) DEBUG(__VA_ARGS__)
#define ERRORN(fmt, ...) fprintf(stderr, fmt N, ## __VA_ARGS__)
#define WARNN(fmt, ...) if LOG_OK(LL_WARN) ERRORN(fmt, __VA_ARGS__)
#define INFON(fmt, ...) if LOG_OK(LL_INFO) printf(fmt, ## __VA_ARGS__)
#define INFOC(c) if LOG_OK(LL_INFO) putchr(c)
void log_setlevel(loglevel_t level);
#endif