diff options
Diffstat (limited to 'src/log.cpp')
| -rw-r--r-- | src/log.cpp | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/src/log.cpp b/src/log.cpp index 6bad34d4..9c96f53a 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -46,25 +46,36 @@ void pj_stderr_logger( void *app_data, int level, const char *msg ) } /************************************************************************/ -/* pj_vlog() */ +/* pj_log_active() */ /************************************************************************/ -void pj_vlog( PJ_CONTEXT *ctx, int level, const char *fmt, va_list args ); - -void pj_vlog( PJ_CONTEXT *ctx, int level, const char *fmt, va_list args ) +bool pj_log_active( PJ_CONTEXT *ctx, int level ) { - char *msg_buf; int debug_level = ctx->debug_level; int shutup_unless_errno_set = debug_level < 0; /* For negative debug levels, we first start logging when errno is set */ if (ctx->last_errno==0 && shutup_unless_errno_set) - return; + return false; if (debug_level < 0) debug_level = -debug_level; if( level > debug_level ) + return false; + return true; +} + +/************************************************************************/ +/* pj_vlog() */ +/************************************************************************/ + +static +void pj_vlog( PJ_CONTEXT *ctx, int level, const PJ* P, const char *fmt, va_list args ) + +{ + char *msg_buf; + if( !pj_log_active(ctx, level) ) return; constexpr size_t BUF_SIZE = 100000; @@ -72,7 +83,15 @@ void pj_vlog( PJ_CONTEXT *ctx, int level, const char *fmt, va_list args ) if( msg_buf == nullptr ) return; - vsnprintf( msg_buf, BUF_SIZE, fmt, args ); + if( P == nullptr || P->short_name == nullptr ) + vsnprintf( msg_buf, BUF_SIZE, fmt, args ); + else + { + std::string fmt_with_P_short_name(P->short_name); + fmt_with_P_short_name += ": "; + fmt_with_P_short_name += fmt; + vsnprintf( msg_buf, BUF_SIZE, fmt_with_P_short_name.c_str(), args ); + } msg_buf[BUF_SIZE-1] = '\0'; ctx->logger( ctx->logger_app_data, level, msg_buf ); @@ -80,7 +99,6 @@ void pj_vlog( PJ_CONTEXT *ctx, int level, const char *fmt, va_list args ) free( msg_buf ); } - /************************************************************************/ /* pj_log() */ /************************************************************************/ @@ -94,7 +112,7 @@ void pj_log( PJ_CONTEXT *ctx, int level, const char *fmt, ... ) return; va_start( args, fmt ); - pj_vlog( ctx, level, fmt, args ); + pj_vlog( ctx, level, nullptr, fmt, args ); va_end( args ); } @@ -118,25 +136,13 @@ PJ_LOG_LEVEL proj_log_level (PJ_CONTEXT *ctx, PJ_LOG_LEVEL log_level) { } /*****************************************************************************/ -static std::string add_short_name_prefix(const PJ* P, const char* fmt) -/*****************************************************************************/ -{ - if( P->short_name == nullptr ) - return fmt; - std::string ret(P->short_name); - ret += ": "; - ret += fmt; - return ret; -} - -/*****************************************************************************/ void proj_log_error (const PJ *P, const char *fmt, ...) { /****************************************************************************** For reporting the most severe events. ******************************************************************************/ va_list args; va_start( args, fmt ); - pj_vlog (pj_get_ctx ((PJ*)P), PJ_LOG_ERROR , add_short_name_prefix(P, fmt).c_str(), args); + pj_vlog (pj_get_ctx ((PJ*)P), PJ_LOG_ERROR, P, fmt, args); va_end( args ); } @@ -148,7 +154,7 @@ void proj_log_debug (PJ *P, const char *fmt, ...) { ******************************************************************************/ va_list args; va_start( args, fmt ); - pj_vlog (pj_get_ctx (P), PJ_LOG_DEBUG , add_short_name_prefix(P, fmt).c_str(), args); + pj_vlog (pj_get_ctx (P), PJ_LOG_DEBUG, P, fmt, args); va_end( args ); } @@ -159,7 +165,7 @@ void proj_context_log_debug (PJ_CONTEXT *ctx, const char *fmt, ...) { ******************************************************************************/ va_list args; va_start( args, fmt ); - pj_vlog (ctx, PJ_LOG_DEBUG , fmt, args); + pj_vlog (ctx, PJ_LOG_DEBUG, nullptr, fmt, args); va_end( args ); } @@ -170,7 +176,7 @@ void proj_log_trace (PJ *P, const char *fmt, ...) { ******************************************************************************/ va_list args; va_start( args, fmt ); - pj_vlog (pj_get_ctx (P), PJ_LOG_TRACE , add_short_name_prefix(P, fmt).c_str(), args); + pj_vlog (pj_get_ctx (P), PJ_LOG_TRACE, P, fmt, args); va_end( args ); } |
