From d20cc8bea38b6070a865ba04286f487034ba53b2 Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Wed, 21 Oct 2015 09:44:25 +0200 Subject: [PATCH] core: added framework to allow replacing logging to syslog - this enables a module to replace all logging to syslog with another logging mechanism - it is not enabled when log_stderror=yes or the system is detected as __SUNPRO_C --- dprint.c | 13 +++++++++++++ dprint.h | 11 +++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/dprint.c b/dprint.c index ebb5059a307..a2a296148cf 100644 --- a/dprint.c +++ b/dprint.c @@ -36,6 +36,19 @@ #include #include +char *_km_log_engine_type = NULL; +char *_km_log_engine_data = NULL; + +km_log_f _km_log_func = &syslog; + +/** + * + */ +void km_log_func_set(km_log_f f) +{ + _km_log_func = f; +} + #ifndef NO_SIG_DEBUG /* signal protection: !=0 when LOG/DBG/... are printing */ volatile int dprint_crit = 0; diff --git a/dprint.h b/dprint.h index 40fc62a9540..35d5a0d4c99 100644 --- a/dprint.h +++ b/dprint.h @@ -123,6 +123,13 @@ extern int log_stderr; extern int log_color; extern char *log_prefix_fmt; extern str *log_prefix_val; +extern char *_km_log_engine_type; +extern char *_km_log_engine_data; + +typedef void (*km_log_f)(int, const char *, ...); +extern km_log_f _km_log_func; + +void km_log_func_set(km_log_f f); /** @brief maps log levels to their string name and corresponding syslog level */ @@ -303,7 +310,7 @@ void log_prefix_init(void); if (unlikely(log_color)) dprint_color_reset(); \ } else { \ if(unlikely(log_prefix_val)) { \ - syslog(LOG2SYSLOG_LEVEL(__llevel) |\ + _km_log_func(LOG2SYSLOG_LEVEL(__llevel) |\ (((facility) != DEFAULT_FACILITY) ? \ (facility) : \ get_debug_facility(LOG_MNAME, LOG_MNAME_LEN)), \ @@ -312,7 +319,7 @@ void log_prefix_init(void); (lname)?(lname):LOG_LEVEL2NAME(__llevel),\ (prefix) , ## args); \ } else { \ - syslog(LOG2SYSLOG_LEVEL(__llevel) |\ + _km_log_func(LOG2SYSLOG_LEVEL(__llevel) |\ (((facility) != DEFAULT_FACILITY) ? \ (facility) : \ get_debug_facility(LOG_MNAME, LOG_MNAME_LEN)), \