Avoid evaluating log arguments when log filtered by level. (#8685)
This commit is contained in:
parent
a2af2a306b
commit
d026647f4f
@ -1161,12 +1161,10 @@ void serverLogRaw(int level, const char *msg) {
|
|||||||
/* Like serverLogRaw() but with printf-alike support. This is the function that
|
/* Like serverLogRaw() but with printf-alike support. This is the function that
|
||||||
* is used across the code. The raw version is only used in order to dump
|
* is used across the code. The raw version is only used in order to dump
|
||||||
* the INFO output on crash. */
|
* the INFO output on crash. */
|
||||||
void serverLog(int level, const char *fmt, ...) {
|
void _serverLog(int level, const char *fmt, ...) {
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char msg[LOG_MAX_LEN];
|
char msg[LOG_MAX_LEN];
|
||||||
|
|
||||||
if ((level&0xff) < server.verbosity) return;
|
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
vsnprintf(msg, sizeof(msg), fmt, ap);
|
vsnprintf(msg, sizeof(msg), fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
11
src/server.h
11
src/server.h
@ -2210,10 +2210,10 @@ void preventCommandAOF(client *c);
|
|||||||
void preventCommandReplication(client *c);
|
void preventCommandReplication(client *c);
|
||||||
int prepareForShutdown(int flags);
|
int prepareForShutdown(int flags);
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
void serverLog(int level, const char *fmt, ...)
|
void _serverLog(int level, const char *fmt, ...)
|
||||||
__attribute__((format(printf, 2, 3)));
|
__attribute__((format(printf, 2, 3)));
|
||||||
#else
|
#else
|
||||||
void serverLog(int level, const char *fmt, ...);
|
void _serverLog(int level, const char *fmt, ...);
|
||||||
#endif
|
#endif
|
||||||
void serverLogRaw(int level, const char *msg);
|
void serverLogRaw(int level, const char *msg);
|
||||||
void serverLogFromHandler(int level, const char *msg);
|
void serverLogFromHandler(int level, const char *msg);
|
||||||
@ -2719,6 +2719,13 @@ void killIOThreads(void);
|
|||||||
void killThreads(void);
|
void killThreads(void);
|
||||||
void makeThreadKillable(void);
|
void makeThreadKillable(void);
|
||||||
|
|
||||||
|
/* Use macro for checking log level to avoid evaluating arguments in cases log
|
||||||
|
* should be ignored due to low level. */
|
||||||
|
#define serverLog(level, ...) do {\
|
||||||
|
if (((level)&0xff) < server.verbosity) break;\
|
||||||
|
_serverLog(level, __VA_ARGS__);\
|
||||||
|
} while(0)
|
||||||
|
|
||||||
/* TLS stuff */
|
/* TLS stuff */
|
||||||
void tlsInit(void);
|
void tlsInit(void);
|
||||||
void tlsCleanup(void);
|
void tlsCleanup(void);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user