Libecoli 0.9.1
Extensible COmmand LIne library
 
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 <syslog.h>
22
23#include <ecoli/assert.h>
24
35
53#define EC_LOG_TYPE_REGISTER(name) \
54 static int name##_log_type; \
55 static int ec_log_local_type; \
56 __attribute__((constructor, used)) static void ec_log_register_##name(void) \
57 { \
58 ec_log_local_type = ec_log_type_register(#name); \
59 ec_assert_print(ec_log_local_type >= 0, "cannot register log type.\n"); \
60 name##_log_type = ec_log_local_type; \
61 }
62
81typedef int (*ec_log_t)(int type, enum ec_log_level level, void *opaque, const char *str);
82
94int ec_log_fct_register(ec_log_t usr_log, void *opaque);
95
109int ec_log_type_register(const char *name);
110
120const char *ec_log_name(int type);
121
134int ec_log(int type, enum ec_log_level level, const char *format, ...)
135 __attribute__((format(__printf__, 3, 4)));
136
151int ec_vlog(int type, enum ec_log_level level, const char *format, va_list ap);
152
167#define EC_LOG(level, args...) ec_log(ec_log_local_type, level, args)
168
185#define EC_VLOG(level, fmt, ap) ec_vlog(ec_log_local_type, level, fmt, ap)
186
205int ec_log_default_cb(int type, enum ec_log_level level, void *opaque, const char *str);
206
222
234
int(* ec_log_t)(int type, enum ec_log_level level, void *opaque, const char *str)
Definition log.h:81
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__
ec_log_level
Definition log.h:25
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)
@ EC_LOG_EMERG
Definition log.h:26
@ EC_LOG_ALERT
Definition log.h:27
@ EC_LOG_CRIT
Definition log.h:28
@ EC_LOG_INFO
Definition log.h:32
@ EC_LOG_WARNING
Definition log.h:30
@ EC_LOG_NOTICE
Definition log.h:31
@ EC_LOG_ERR
Definition log.h:29
@ EC_LOG_DEBUG
Definition log.h:33