Libecoli
0.11.5
Extensible COmmand LIne library
Toggle main menu visibility
Loading...
Searching...
No Matches
log.h
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3
*/
4
17
18
#pragma once
19
20
#include <stdarg.h>
21
#include <sys/queue.h>
22
#include <syslog.h>
23
24
#include <ecoli/assert.h>
25
29
enum
ec_log_level
{
30
EC_LOG_EMERG
= 0,
31
EC_LOG_ALERT
= 1,
32
EC_LOG_CRIT
= 2,
33
EC_LOG_ERR
= 3,
34
EC_LOG_WARNING
= 4,
35
EC_LOG_NOTICE
= 5,
36
EC_LOG_INFO
= 6,
37
EC_LOG_DEBUG
= 7,
38
};
39
45
struct
ec_log_type
{
46
TAILQ_ENTRY(
ec_log_type
) next;
47
const
char
*name;
48
enum
ec_log_level
level
;
49
int
id
;
50
};
51
69
#define EC_LOG_TYPE_REGISTER(name) \
70
static struct ec_log_type name##_log_type = { \
71
.n##ame = #name, \
72
}; \
73
static int ec_log_local_type; \
74
__attribute__((constructor, used)) static void ec_log_register_##name(void) \
75
{ \
76
ec_log_local_type = ec_log_type_register(&name##_log_type); \
77
ec_assert_print(ec_log_local_type >= 0, "cannot register log type.\n"); \
78
}
79
98
typedef
int (*
ec_log_t
)(
int
type,
enum
ec_log_level
level,
void
*opaque,
const
char
*str);
99
111
int
ec_log_fct_register
(
ec_log_t
usr_log,
void
*opaque);
112
126
int
ec_log_type_register
(
struct
ec_log_type
*type);
127
137
const
char
*
ec_log_name
(
int
type);
138
151
int
ec_log
(
int
type,
enum
ec_log_level
level,
const
char
*format, ...)
152
__attribute__((format(__printf__, 3, 4)));
153
168
int
ec_vlog
(
int
type, enum
ec_log_level
level, const
char
*format, va_list ap);
169
184
#define EC_LOG(level, args...) ec_log(ec_log_local_type, level, args)
185
202
#define EC_VLOG(level, fmt, ap) ec_vlog(ec_log_local_type, level, fmt, ap)
203
222
int
ec_log_default_cb
(
int
type,
enum
ec_log_level
level,
void
*opaque,
const
char
*str);
223
236
int
ec_log_level_set
(
enum
ec_log_level
level);
237
248
enum
ec_log_level
ec_log_level_get
(
void
);
249
ec_log_t
int(* ec_log_t)(int type, enum ec_log_level level, void *opaque, const char *str)
Definition
log.h:98
ec_log_level_set
int ec_log_level_set(enum ec_log_level level)
ec_log_fct_register
int ec_log_fct_register(ec_log_t usr_log, void *opaque)
ec_log_default_cb
int ec_log_default_cb(int type, enum ec_log_level level, void *opaque, const char *str)
ec_log
int ec_log(int type, enum ec_log_level level, const char *format,...) __attribute__((format(__printf__
ec_log_level
ec_log_level
Definition
log.h:29
ec_vlog
int int ec_vlog(int type, enum ec_log_level level, const char *format, va_list ap)
ec_log_name
const char * ec_log_name(int type)
ec_log_type_register
int ec_log_type_register(struct ec_log_type *type)
ec_log_level_get
enum ec_log_level ec_log_level_get(void)
EC_LOG_EMERG
@ EC_LOG_EMERG
Definition
log.h:30
EC_LOG_ALERT
@ EC_LOG_ALERT
Definition
log.h:31
EC_LOG_CRIT
@ EC_LOG_CRIT
Definition
log.h:32
EC_LOG_INFO
@ EC_LOG_INFO
Definition
log.h:36
EC_LOG_WARNING
@ EC_LOG_WARNING
Definition
log.h:34
EC_LOG_NOTICE
@ EC_LOG_NOTICE
Definition
log.h:35
EC_LOG_ERR
@ EC_LOG_ERR
Definition
log.h:33
EC_LOG_DEBUG
@ EC_LOG_DEBUG
Definition
log.h:37
ec_log_type
Definition
log.h:45
ec_log_type::level
enum ec_log_level level
Definition
log.h:48
ec_log_type::id
int id
Definition
log.h:49
ecoli
log.h
Generated by
1.17.0