diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2021-07-10 13:34:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-10 13:34:59 +0200 |
| commit | 93e96a5e478ea764fe8777a09dd092b7539ef3b9 (patch) | |
| tree | fd13a2eaf77e38fcef3745edde1bf64ee4718f01 | |
| parent | d7752784f1e59e9b2e2f9aa9cfce4f9adf1d997e (diff) | |
| parent | 747faf54b3252824e10dd373f98f0e53815bb0b3 (diff) | |
| download | PROJ-93e96a5e478ea764fe8777a09dd092b7539ef3b9.tar.gz PROJ-93e96a5e478ea764fe8777a09dd092b7539ef3b9.zip | |
Merge pull request #2775 from OSGeo/backport-2774-to-8.1
[Backport 8.1] Logging: avoid some overhead when logging is not enabled (fixes #2770)
| -rw-r--r-- | src/log.cpp | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/src/log.cpp b/src/log.cpp index 6bad34d4..4a2cc73d 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -48,9 +48,9 @@ void pj_stderr_logger( void *app_data, int level, const char *msg ) /************************************************************************/ /* pj_vlog() */ /************************************************************************/ -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 ) +static +void pj_vlog( PJ_CONTEXT *ctx, int level, const PJ* P, const char *fmt, va_list args ) { char *msg_buf; @@ -72,7 +72,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 +88,6 @@ void pj_vlog( PJ_CONTEXT *ctx, int level, const char *fmt, va_list args ) free( msg_buf ); } - /************************************************************************/ /* pj_log() */ /************************************************************************/ @@ -94,7 +101,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 +125,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 +143,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 +154,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 +165,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 ); } |
