logging: move check of enabled debugging to DEBUG_LOG macro
This avoids unnecessary calls to the logging function when debugging messages are not logged. The cost is a slight increase in the size of the binary (when compiled with debug messages).
This commit is contained in:
parent
97ba9e4d47
commit
0dea8d97f4
2 changed files with 12 additions and 7 deletions
14
logging.c
14
logging.c
|
@ -34,6 +34,9 @@
|
||||||
#include "mkdirpp.h"
|
#include "mkdirpp.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
/* This is used by DEBUG_LOG macro */
|
||||||
|
int log_debug_enabled = 0;
|
||||||
|
|
||||||
/* ================================================== */
|
/* ================================================== */
|
||||||
/* Flag indicating we have initialised */
|
/* Flag indicating we have initialised */
|
||||||
static int initialised = 0;
|
static int initialised = 0;
|
||||||
|
@ -148,10 +151,6 @@ void LOG_Message(LOG_Severity severity, LOG_Facility facility,
|
||||||
time_t t;
|
time_t t;
|
||||||
struct tm stm;
|
struct tm stm;
|
||||||
|
|
||||||
/* Don't write debug messages if debug level is too low */
|
|
||||||
if (debug_level < DEBUG_LEVEL_PRINT_DEBUG && severity == LOGS_DEBUG)
|
|
||||||
return;
|
|
||||||
|
|
||||||
#ifdef WINNT
|
#ifdef WINNT
|
||||||
#else
|
#else
|
||||||
if (!system_log) {
|
if (!system_log) {
|
||||||
|
@ -216,8 +215,11 @@ LOG_OpenSystemLog(void)
|
||||||
void LOG_SetDebugLevel(int level)
|
void LOG_SetDebugLevel(int level)
|
||||||
{
|
{
|
||||||
debug_level = level;
|
debug_level = level;
|
||||||
if (!DEBUG && level >= DEBUG_LEVEL_PRINT_DEBUG)
|
if (level >= DEBUG_LEVEL_PRINT_DEBUG) {
|
||||||
LOG(LOGS_WARN, LOGF_Logging, "Not compiled with full debugging support");
|
if (!DEBUG)
|
||||||
|
LOG(LOGS_WARN, LOGF_Logging, "Not compiled with full debugging support");
|
||||||
|
log_debug_enabled = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ================================================== */
|
/* ================================================== */
|
||||||
|
|
|
@ -28,6 +28,9 @@
|
||||||
#ifndef GOT_LOGGING_H
|
#ifndef GOT_LOGGING_H
|
||||||
#define GOT_LOGGING_H
|
#define GOT_LOGGING_H
|
||||||
|
|
||||||
|
/* Flag indicating whether debug messages are logged */
|
||||||
|
extern int log_debug_enabled;
|
||||||
|
|
||||||
/* Line logging macros. If the compiler is GNU C, we take advantage of
|
/* Line logging macros. If the compiler is GNU C, we take advantage of
|
||||||
being able to get the function name also. */
|
being able to get the function name also. */
|
||||||
|
|
||||||
|
@ -41,7 +44,7 @@
|
||||||
|
|
||||||
#define DEBUG_LOG(facility, ...) \
|
#define DEBUG_LOG(facility, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (DEBUG) \
|
if (DEBUG && log_debug_enabled) \
|
||||||
LOG_Message(LOGS_DEBUG, facility, __LINE__, __FILE__, FUNCTION_NAME, __VA_ARGS__); \
|
LOG_Message(LOGS_DEBUG, facility, __LINE__, __FILE__, FUNCTION_NAME, __VA_ARGS__); \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define LOG(severity, facility, ...) LOG_Message(severity, facility, __LINE__, __FILE__, FUNCTION_NAME, __VA_ARGS__)
|
#define LOG(severity, facility, ...) LOG_Message(severity, facility, __LINE__, __FILE__, FUNCTION_NAME, __VA_ARGS__)
|
||||||
|
|
Loading…
Reference in a new issue