aboutsummaryrefslogtreecommitdiff
path: root/include/logger.h
blob: f5821004d2526476b446af37d72b02f240035902 (plain)
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
#ifndef __LOGGER_H__
#define __LOGGER_H__

#include "types.h"


#define LOG_DEBUG 0
#define LOG_INFO 1
#define LOG_WARN 2
#define LOG_ERROR 3 /* will be fatal */
#define LOG_FATAL 4 /* followed directly by maybe cleanup and exit */

#define __LOGFUNC__ __logger.func = __func__

#define logd( s, ... ) __LOGFUNC__; logger( LOG_DEBUG, s, ##__VA_ARGS__ );
#define logi( s, ... ) __LOGFUNC__; logger( LOG_INFO, s, ##__VA_ARGS__ );
#define logw( s, ... ) __LOGFUNC__; logger( LOG_WARN, s, ##__VA_ARGS__ );
#define loge( s, ... ) __LOGFUNC__; logger( LOG_ERROR, s, ##__VA_ARGS__ );
#define logf( s, ... ) __LOGFUNC__; logger( LOG_FATAL, s, ##__VA_ARGS__ );


typedef struct {
  Size fd;
  String func;
} Logger;

extern Logger __logger;


Size logger_init( void );
void logger( Size level, String fmt, ... );
void logger_term( void );


#endif /* __DISPLAY_H__ */