Libecoli 0.5.0
Extensible COmmand LIne library
 
Loading...
Searching...
No Matches
ecoli_log.h
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3 */
4
17
18#ifndef ECOLI_LOG_
19#define ECOLI_LOG_
20
21#include <stdarg.h>
22#include <syslog.h>
23
24#include <ecoli_assert.h>
25
26enum ec_log_level {
27 EC_LOG_EMERG = 0, /* system is unusable */
28 EC_LOG_ALERT = 1, /* action must be taken immediately */
29 EC_LOG_CRIT = 2, /* critical conditions */
30 EC_LOG_ERR = 3, /* error conditions */
31 EC_LOG_WARNING = 4, /* warning conditions */
32 EC_LOG_NOTICE = 5, /* normal but significant condition */
33 EC_LOG_INFO = 6, /* informational */
34 EC_LOG_DEBUG = 7, /* debug-level messages */
35};
36
54#define EC_LOG_TYPE_REGISTER(name) \
55 static int name##_log_type; \
56 static int ec_log_local_type; \
57 __attribute__((constructor, used)) \
58 static void ec_log_register_##name(void) \
59 { \
60 ec_log_local_type = ec_log_type_register(#name); \
61 ec_assert_print(ec_log_local_type >= 0, \
62 "cannot register log type.\n"); \
63 name##_log_type = ec_log_local_type; \
64 }
65
84typedef int (*ec_log_t)(int type, enum ec_log_level level, void *opaque,
85 const char *str);
86
98int ec_log_fct_register(ec_log_t usr_log, void *opaque);
99
113int ec_log_type_register(const char *name);
114
124const char *ec_log_name(int type);
125
138int ec_log(int type, enum ec_log_level level, const char *format, ...)
139 __attribute__((format(__printf__, 3, 4)));
140
155int ec_vlog(int type, enum ec_log_level level, const char *format, va_list ap);
156
171#define EC_LOG(level, args...) ec_log(ec_log_local_type, level, args)
172
189#define EC_VLOG(level, fmt, ap) ec_vlog(ec_log_local_type, level, fmt, ap)
190
209int ec_log_default_cb(int type, enum ec_log_level level, void *opaque,
210 const char *str);
211
226int ec_log_level_set(enum ec_log_level level);
227
238enum ec_log_level ec_log_level_get(void);
239
240#endif
241
int(* ec_log_t)(int type, enum ec_log_level level, void *opaque, const char *str)
Definition ecoli_log.h:84
int ec_log_level_set(enum ec_log_level level)
int ec_log_fct_register(ec_log_t usr_log, void *opaque)
int ec_log_default_cb(int type, enum ec_log_level level, void *opaque, const char *str)
int ec_log(int type, enum ec_log_level level, const char *format,...) __attribute__((format(__printf__
int int ec_vlog(int type, enum ec_log_level level, const char *format, va_list ap)
const char * ec_log_name(int type)
int ec_log_type_register(const char *name)
enum ec_log_level ec_log_level_get(void)