From 72a4e9f304cff9f487b334f0d70f09142fee4183 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sat, 28 Apr 2012 18:04:07 +0200 Subject: [PATCH] Make logging configurable - event loop - c-ares --- citadel/event_client.c | 6 ++- citadel/event_client.h | 39 ++++++++++--------- citadel/modules/c-ares-dns/serv_c-ares-dns.c | 6 +++ .../modules/eventclient/serv_eventclient.c | 14 +++++++ 4 files changed, 44 insertions(+), 21 deletions(-) diff --git a/citadel/event_client.c b/citadel/event_client.c index d0e0fd9ae..15b5f44a7 100644 --- a/citadel/event_client.c +++ b/citadel/event_client.c @@ -987,10 +987,12 @@ void EV_backtrace(AsyncIO *IO) size = backtrace(stack_frames, sizeof(stack_frames) / sizeof(void*)); strings = backtrace_symbols(stack_frames, size); for (i = 0; i < size; i++) { - if (strings != NULL) + if (strings != NULL) { EV_syslog(LOG_ALERT, " BT %s\n", strings[i]); - else + } + else { EV_syslog(LOG_ALERT, " BT %p\n", stack_frames[i]); + } } free(strings); #endif diff --git a/citadel/event_client.h b/citadel/event_client.h index 2d5ab9861..90f5247a6 100644 --- a/citadel/event_client.h +++ b/citadel/event_client.h @@ -179,51 +179,52 @@ typedef struct _IOAddHandler { IO_CallBack EvAttch; } IOAddHandler; + + +extern int DebugEventLoop; +extern int DebugCAres; + +#define EDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (DebugEventLoop != 0)) + #define CCID ((CitContext*)IO->CitContext)->cs_pid #define EV_syslog(LEVEL, FORMAT, ...) \ - syslog(LEVEL, "IO[%ld]CC[%d]" FORMAT, IO->ID, CCID, __VA_ARGS__) + EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d]" FORMAT, IO->ID, CCID, __VA_ARGS__) #define EVM_syslog(LEVEL, FORMAT) \ - syslog(LEVEL, "IO[%ld]CC[%d]" FORMAT, IO->ID, CCID) + EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d]" FORMAT, IO->ID, CCID) #define EVNC_syslog(LEVEL, FORMAT, ...) \ - syslog(LEVEL, "IO[%ld]" FORMAT, IO->ID, __VA_ARGS__) + EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]" FORMAT, IO->ID, __VA_ARGS__) -#define EVNCM_syslog(LEVEL, FORMAT) syslog(LEVEL, "IO[%ld]" FORMAT, IO->ID) +#define EVNCM_syslog(LEVEL, FORMAT) EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]" FORMAT, IO->ID) -#ifdef DEBUG_CARES + +#define CDBGLOG() if (DebugCAres != 0) #define EV_DNS_LOG_START(a) \ - syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %p FD %d", IO->ID, CCID, &IO->a, IO->a.fd); \ + CDBGLOG () syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %p FD %d", IO->ID, CCID, &IO->a, IO->a.fd); \ EV_backtrace(IO); #define EV_DNS_LOG_STOP(a) \ - syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %p FD %d", IO->ID, CCID, &IO->a, IO->a.fd); \ + CDBGLOG () syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %p FD %d", IO->ID, CCID, &IO->a, IO->a.fd); \ EV_backtrace(IO); #define EV_DNS_LOG_INIT(a) \ - syslog(LOG_DEBUG, "IO[%ld]CC[%d] * Init " #a " %p FD %d", IO->ID, CCID, &IO->a, IO->a.fd); \ + CDBGLOG () syslog(LOG_DEBUG, "IO[%ld]CC[%d] * Init " #a " %p FD %d", IO->ID, CCID, &IO->a, IO->a.fd); \ EV_backtrace(IO); #define EV_DNS_LOGT_START(a) \ - syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %p", IO->ID, CCID, &IO->a); \ + CDBGLOG () syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %p", IO->ID, CCID, &IO->a); \ EV_backtrace(IO); #define EV_DNS_LOGT_STOP(a) \ - syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %p", IO->ID, CCID, &IO->a); \ + CDBGLOG () syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %p", IO->ID, CCID, &IO->a); \ EV_backtrace(IO); #define EV_DNS_LOGT_INIT(a) \ - syslog(LOG_DEBUG, "IO[%ld]CC[%d] * Init " #a " %p", IO->ID, CCID, &IO->a); \ + CDBGLOG () syslog(LOG_DEBUG, "IO[%ld]CC[%d] * Init " #a " %p", IO->ID, CCID, &IO->a); \ EV_backtrace(IO); -#else -#define EV_DNS_LOG_START(a) -#define EV_DNS_LOG_STOP(a) -#define EV_DNS_LOG_INIT(a) -#define EV_DNS_LOGT_START(a) -#define EV_DNS_LOGT_STOP(a) -#define EV_DNS_LOGT_INIT(a) -#endif + void FreeAsyncIOContents(AsyncIO *IO); diff --git a/citadel/modules/c-ares-dns/serv_c-ares-dns.c b/citadel/modules/c-ares-dns/serv_c-ares-dns.c index d1b1a027e..13e156a80 100644 --- a/citadel/modules/c-ares-dns/serv_c-ares-dns.c +++ b/citadel/modules/c-ares-dns/serv_c-ares-dns.c @@ -57,6 +57,7 @@ #include "ctdl_module.h" #include "event_client.h" +int DebugCAres = 0; extern struct ev_loop *event_base; @@ -609,11 +610,16 @@ void SockStateCb(void *data, int sock, int read, int write) ev_io_stop(event_base, &IO->DNS.send_event); } } +void EnableDebugCAres(void) +{ + DebugCAres = 1; +} CTDL_MODULE_INIT(c_ares_client) { if (!threading) { + CtdlRegisterDebugFlagHook(HKEY("cares"), EnableDebugCAres); int r = ares_library_init(ARES_LIB_INIT_ALL); if (0 != r) { diff --git a/citadel/modules/eventclient/serv_eventclient.c b/citadel/modules/eventclient/serv_eventclient.c index ce5d7f041..97e217de9 100644 --- a/citadel/modules/eventclient/serv_eventclient.c +++ b/citadel/modules/eventclient/serv_eventclient.c @@ -60,6 +60,8 @@ #include "serv_curl.h" ev_loop *event_base; +int DebugEventLoop = 0; +int DebugCurl = 0; long EvIDSource = 1; /***************************************************************************** @@ -822,10 +824,22 @@ void ShutDownEventQueues(void) pthread_mutex_unlock(&EventQueueMutex); } +void DebugEventloopEnable(void) +{ + DebugEventLoop = 1; +} + +void DebugCurlEnable(void) +{ + DebugCurl = 1; +} + CTDL_MODULE_INIT(event_client) { if (!threading) { + CtdlRegisterDebugFlagHook(HKEY("eventloop"), DebugEventloopEnable); + CtdlRegisterDebugFlagHook(HKEY("curl"), DebugCurlEnable); InitEventQueue(); DBInitEventQueue(); CtdlThreadCreate(client_event_thread); -- 2.30.2