1818
1919#include " backtrace.h"
2020#include " os.h"
21+ #include " syslog.h"
2122
2223namespace noobaa
2324{
@@ -28,19 +29,46 @@ namespace noobaa
2829
2930#define DVAL (x ) #x " =" << x << " "
3031
31- #define LOG (x ) std::cerr << LOG_PREFIX() << x << std::endl
32+ extern bool LOG_TO_STDERR_ENABLED;
33+ extern bool LOG_TO_SYSLOG_ENABLED;
34+
35+ #define STD_LOG (x ) \
36+ do { \
37+ std::cerr << x << std::endl; \
38+ } while (0 )
39+
40+ #define SYS_LOG (x ) \
41+ do { \
42+ const char * log_msg = x.c_str (); \
43+ int facility = LOG_LOCAL0; \
44+ int priority = 0 ; \
45+ ::syslog (priority | facility, " %s" , log_msg); \
46+ } while (0 )
47+
48+ #define LOG (x ) \
49+ do { \
50+ std::ostringstream oss; \
51+ oss << " " << LOG_PREFIX () << x; \
52+ std::string message = oss.str (); \
53+ if (LOG_TO_STDERR_ENABLED) { \
54+ STD_LOG (message); \
55+ } \
56+ if (LOG_TO_SYSLOG_ENABLED) { \
57+ SYS_LOG (message); \
58+ } \
59+ } while (0 )
3260
3361// to use DBG the module/file should use either DBG_INIT or DBG_INIT_VAR.
3462#define DBG_INIT (level ) static int __module_debug_var__ = level
3563#define DBG_INIT_VAR (debug_var ) static int & __module_debug_var__ = debug_var
3664#define DBG_SET_LEVEL (level ) __module_debug_var__ = level
3765#define DBG_GET_LEVEL () (__module_debug_var__)
3866#define DBG_VISIBLE (level ) (level <= __module_debug_var__)
39- #define DBG (level, x ) \
40- do { \
41- if (DBG_VISIBLE (level)) { \
42- LOG (" [L" << level << " ] " << x); \
43- } \
67+ #define DBG (level, x ) \
68+ do { \
69+ if (DBG_VISIBLE (level)) { \
70+ LOG (" [L" << level << " ] " << x); \
71+ } \
4472 } while (0 )
4573#define DBG0 (x ) DBG(0 , x)
4674#define DBG1 (x ) DBG(1 , x)
0 commit comments