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
sayer/1.4-spce2.6
Stefan Sayer 16 years ago
parent 8237f5e515
commit 425648e5be

@ -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?

@ -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 */
}

@ -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)
/**

Loading…
Cancel
Save