From 425648e5be29a8e1eae7771d6f523a4e15b4d228 Mon Sep 17 00:00:00 2001 From: Stefan Sayer Date: Sat, 1 May 2010 15:06:11 +0000 Subject: [PATCH] per default, put 1. not the complete function signature in the log 2. the location (PID/TID/file/line...) at the beginning see 1 -DLOG_PRETTY_FUNCTION and 2 -DLOG_LOC_DATA_ATEND in Makefile.defs git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1879 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- Makefile.defs | 2 ++ core/log.cpp | 22 ++++++++++++++++++++-- core/log.h | 52 ++++++++++++++++++++++++++++++--------------------- 3 files changed, 53 insertions(+), 23 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 96bc4c09..dcc0ce1d 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -21,6 +21,8 @@ CPPFLAGS += -D_DEBUG \ # -DMAX_RTP_SESSIONS=8192 \ # -DSUPPORT_IPV6 \ # -DNO_THREADID_LOG \ +# -DLOG_PRETTY_FUNCTION \ +# -DLOG_LOC_DATA_ATEND # compile with session thread pool support? diff --git a/core/log.cpp b/core/log.cpp index 7405eed2..9f7967ce 100644 --- a/core/log.cpp +++ b/core/log.cpp @@ -121,16 +121,34 @@ void SyslogLogFac::log(int level, pid_t pid, pthread_t tid, const char* func, co { static const int log2syslog_level[] = { LOG_ERR, LOG_WARNING, LOG_INFO, LOG_DEBUG }; #ifdef _DEBUG + # ifndef NO_THREADID_LOG - syslog(log2syslog_level[level], "%s: %s [%s, #%lx] [%s:%d]", - log_level2str[level], msg, func, tid, file, line); +# ifdef LOG_LOC_DATA_ATEND + syslog(log2syslog_level[level], "%s: %s [#%lx] [%s %s:%d]", + log_level2str[level], msg, tid, func, file, line); +# else + syslog(log2syslog_level[level], "[#%lx] [%s, %s:%d] %s: %s", + tid, func, file, line, log_level2str[level], msg); +# endif # else /* NO_THREADID_LOG */ +# ifdef LOG_LOC_DATA_ATEND syslog(log2syslog_level[level], "%s: %s [%s] [%s:%d]", log_level2str[level], msg, func, file, line); +# else + syslog(log2syslog_level[level], "[%s, %s:%d] %s: %s", + func, file, line, log_level2str[level], msg); +# endif # endif /* NO_THREADID_LOG */ + #else /* !_DEBUG */ +# ifdef LOG_LOC_DATA_ATEND syslog(log2syslog_level[level], "%s: %s [%s:%d]", log_level2str[level], msg, file, line); +# else + syslog(log2syslog_level[level], "[%s:%d] %s: %s", + file, line, log_level2str[level], msg); +# endif + #endif /* !_DEBUG */ } diff --git a/core/log.h b/core/log.h index 8252bb72..85d33fd4 100644 --- a/core/log.h +++ b/core/log.h @@ -57,7 +57,11 @@ enum Log_Level { ((level) < L_ERR ? L_ERR : ((level) > L_DBG ? L_DBG : (level))) #ifdef __cplusplus -# define FUNC_NAME __PRETTY_FUNCTION__ +# ifdef PRETTY_FUNCTION_LOG +# define FUNC_NAME __PRETTY_FUNCTION__ +# else +# define FUNC_NAME __FUNCTION__ +#endif #else # define FUNC_NAME __FUNCTION__ #endif @@ -72,12 +76,12 @@ enum Log_Level { #ifdef _DEBUG # ifndef NO_THREADID_LOG # define GET_TID() pthread_self() -# define LOC_FMT " [%s, #%lx] [%u/%s:%d]" -# define LOC_DATA FUNC_NAME, (unsigned long)tid_, pid_, __FILE__, __LINE__ +# define LOC_FMT " [#%lx/%u] [%s, %s:%d]" +# define LOC_DATA tid_, pid_, FUNC_NAME, __FILE__, __LINE__ # else # define GET_TID() 0 -# define LOC_FMT " [%s] [%u/%s:%d]" -# define LOC_DATA FUNC_NAME, pid_, __FILE__, __LINE__ +# define LOC_FMT " [%u] [%s %s:%d]" +# define LOC_DATA pid_, FUNC_NAME, __FILE__, __LINE__ # endif #else # define GET_TID() 0 @@ -85,25 +89,31 @@ enum Log_Level { # define LOC_DATA pid_, __FILE__, __LINE__ #endif +#ifdef LOG_LOC_DATA_ATEND +#define COMPLETE_LOG_FMT "%s: %s" LOC_FMT "\n", log_level2str[level_], msg_, LOC_DATA +#else +#define COMPLETE_LOG_FMT LOC_FMT " %s: %s" "\n", LOC_DATA, log_level2str[level_], msg_ +#endif + /* The underscores in parameter and local variable names are there to avoid collisions. */ -#define _LOG(level__, fmt, args...) \ - do { \ - int level_ = FIX_LOG_LEVEL(level__); \ - \ - if ((level_) <= log_level) { \ - pid_t pid_ = GET_PID(); \ - pthread_t tid_ = GET_TID(); \ - char msg_[512]; \ - int n_ = snprintf(msg_, sizeof(msg_), fmt, ##args); \ - if (msg_[n_ - 1] == '\n') msg_[n_ - 1] = '\0'; \ - \ - if (log_stderr) { \ - fprintf(stderr, "%s: %s" LOC_FMT "\n", log_level2str[level_], msg_, LOC_DATA); \ - fflush(stderr); \ - } \ +#define _LOG(level__, fmt, args...) \ + do { \ + int level_ = FIX_LOG_LEVEL(level__); \ + \ + if ((level_) <= log_level) { \ + pid_t pid_ = GET_PID(); \ + pthread_t tid_ = GET_TID(); \ + char msg_[512]; \ + int n_ = snprintf(msg_, sizeof(msg_), fmt, ##args); \ + if (msg_[n_ - 1] == '\n') msg_[n_ - 1] = '\0'; \ + \ + if (log_stderr) { \ + fprintf(stderr, COMPLETE_LOG_FMT); \ + fflush(stderr); \ + } \ run_log_hooks(level_, pid_, tid_, FUNC_NAME, __FILE__, __LINE__, msg_); \ - } \ + } \ } while(0) /**