1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright 2016-2020, Intel Corporation */
5 * rpmemd_log.h -- rpmemd logging functions declarations
11 #define FORMAT_PRINTF(a, b) __attribute__((__format__(__printf__, (a), (b))))
14 * The tab character is not allowed in rpmemd log,
15 * because it is not well handled by syslog.
16 * Please use RPMEMD_LOG_INDENT instead.
18 #define RPMEMD_LOG_INDENT " "
21 #define RPMEMD_LOG(level, fmt, arg...) do {\
22 COMPILE_ERROR_ON(strchr(fmt, '\t') != 0);\
23 rpmemd_log(RPD_LOG_##level, __FILE__, __LINE__, fmt, ## arg);\
26 #define RPMEMD_LOG(level, fmt, arg...) do {\
27 COMPILE_ERROR_ON(strchr(fmt, '\t') != 0);\
28 rpmemd_log(RPD_LOG_##level, NULL, 0, fmt, ## arg);\
33 #define RPMEMD_DBG(fmt, arg...) do {\
34 COMPILE_ERROR_ON(strchr(fmt, '\t') != 0);\
35 rpmemd_log(_RPD_LOG_DBG, __FILE__, __LINE__, fmt, ## arg);\
38 #define RPMEMD_DBG(fmt, arg...) do {} while (0)
41 #define RPMEMD_ERR(fmt, arg...) do {\
42 RPMEMD_LOG(ERR, fmt, ## arg);\
45 #define RPMEMD_FATAL(fmt, arg...) do {\
46 RPMEMD_LOG(ERR, fmt, ## arg);\
50 #define RPMEMD_ASSERT(cond) do {\
52 rpmemd_log(RPD_LOG_ERR, __FILE__, __LINE__,\
53 "assertion fault: %s", #cond);\
58 enum rpmemd_log_level
{
63 _RPD_LOG_DBG
, /* disallow to use this with LOG macro */
67 enum rpmemd_log_level
rpmemd_log_level_from_str(const char *str
);
68 const char *rpmemd_log_level_to_str(enum rpmemd_log_level level
);
70 extern enum rpmemd_log_level rpmemd_log_level
;
71 int rpmemd_log_init(const char *ident
, const char *fname
, int use_syslog
);
72 void rpmemd_log_close(void);
73 int rpmemd_prefix(const char *fmt
, ...) FORMAT_PRINTF(1, 2);
74 void rpmemd_log(enum rpmemd_log_level level
, const char *fname
,
75 int lineno
, const char *fmt
, ...) FORMAT_PRINTF(4, 5);