Make logs more efficient by avoiding argument evaluation for LOG* if
it's not needed at the current level
This commit is contained in:
parent
856cb0f2ec
commit
9aee3dd831
@ -555,13 +555,13 @@ std::unique_ptr<nsjconf_t> parseArgs(int argc, char* argv[]) {
|
|||||||
nsjconf->daemonize = true;
|
nsjconf->daemonize = true;
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
logs::logLevel(logs::DEBUG);
|
logs::setLogLevel(logs::DEBUG);
|
||||||
break;
|
break;
|
||||||
case 'q':
|
case 'q':
|
||||||
logs::logLevel(logs::WARNING);
|
logs::setLogLevel(logs::WARNING);
|
||||||
break;
|
break;
|
||||||
case 'Q':
|
case 'Q':
|
||||||
logs::logLevel(logs::FATAL);
|
logs::setLogLevel(logs::FATAL);
|
||||||
break;
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
nsjconf->keep_env = true;
|
nsjconf->keep_env = true;
|
||||||
|
10
config.cc
10
config.cc
@ -102,19 +102,19 @@ static bool configParseInternal(nsjconf_t* nsjconf, const nsjail::NsJailConfig&
|
|||||||
if (njc.has_log_level()) {
|
if (njc.has_log_level()) {
|
||||||
switch (njc.log_level()) {
|
switch (njc.log_level()) {
|
||||||
case nsjail::LogLevel::DEBUG:
|
case nsjail::LogLevel::DEBUG:
|
||||||
logs::logLevel(logs::DEBUG);
|
logs::setLogLevel(logs::DEBUG);
|
||||||
break;
|
break;
|
||||||
case nsjail::LogLevel::INFO:
|
case nsjail::LogLevel::INFO:
|
||||||
logs::logLevel(logs::INFO);
|
logs::setLogLevel(logs::INFO);
|
||||||
break;
|
break;
|
||||||
case nsjail::LogLevel::WARNING:
|
case nsjail::LogLevel::WARNING:
|
||||||
logs::logLevel(logs::WARNING);
|
logs::setLogLevel(logs::WARNING);
|
||||||
break;
|
break;
|
||||||
case nsjail::LogLevel::ERROR:
|
case nsjail::LogLevel::ERROR:
|
||||||
logs::logLevel(logs::ERROR);
|
logs::setLogLevel(logs::ERROR);
|
||||||
break;
|
break;
|
||||||
case nsjail::LogLevel::FATAL:
|
case nsjail::LogLevel::FATAL:
|
||||||
logs::logLevel(logs::FATAL);
|
logs::setLogLevel(logs::FATAL);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOG_E("Unknown log_level: %d", njc.log_level());
|
LOG_E("Unknown log_level: %d", njc.log_level());
|
||||||
|
6
logs.cc
6
logs.cc
@ -70,10 +70,14 @@ bool logSet() {
|
|||||||
return _log_set;
|
return _log_set;
|
||||||
}
|
}
|
||||||
|
|
||||||
void logLevel(enum llevel_t ll) {
|
void setLogLevel(enum llevel_t ll) {
|
||||||
_log_level = ll;
|
_log_level = ll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum llevel_t getLogLevel(void) {
|
||||||
|
return _log_level;
|
||||||
|
}
|
||||||
|
|
||||||
void logFile(const std::string& log_file, int log_fd) {
|
void logFile(const std::string& log_file, int log_fd) {
|
||||||
_log_set = true;
|
_log_set = true;
|
||||||
int newlogfd = -1;
|
int newlogfd = -1;
|
||||||
|
53
logs.h
53
logs.h
@ -33,17 +33,47 @@ namespace logs {
|
|||||||
#define LOG_HELP_BOLD(...) \
|
#define LOG_HELP_BOLD(...) \
|
||||||
logs::logMsg(logs::HELP_BOLD, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
logs::logMsg(logs::HELP_BOLD, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
||||||
|
|
||||||
#define LOG_D(...) logs::logMsg(logs::DEBUG, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
#define LOG_D(...) \
|
||||||
#define LOG_I(...) logs::logMsg(logs::INFO, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
if (logs::getLogLevel() <= logs::DEBUG) { \
|
||||||
#define LOG_W(...) logs::logMsg(logs::WARNING, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
logs::logMsg(logs::DEBUG, __FUNCTION__, __LINE__, false, __VA_ARGS__); \
|
||||||
#define LOG_E(...) logs::logMsg(logs::ERROR, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
}
|
||||||
#define LOG_F(...) logs::logMsg(logs::FATAL, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
#define LOG_I(...) \
|
||||||
|
if (logs::getLogLevel() <= logs::INFO) { \
|
||||||
|
logs::logMsg(logs::INFO, __FUNCTION__, __LINE__, false, __VA_ARGS__); \
|
||||||
|
}
|
||||||
|
#define LOG_W(...) \
|
||||||
|
if (logs::getLogLevel() <= logs::WARNING) { \
|
||||||
|
logs::logMsg(logs::WARNING, __FUNCTION__, __LINE__, false, __VA_ARGS__); \
|
||||||
|
}
|
||||||
|
#define LOG_E(...) \
|
||||||
|
if (logs::getLogLevel() <= logs::ERROR) { \
|
||||||
|
logs::logMsg(logs::ERROR, __FUNCTION__, __LINE__, false, __VA_ARGS__); \
|
||||||
|
}
|
||||||
|
#define LOG_F(...) \
|
||||||
|
if (logs::getLogLevel() <= logs::FATAL) { \
|
||||||
|
logs::logMsg(logs::FATAL, __FUNCTION__, __LINE__, false, __VA_ARGS__); \
|
||||||
|
}
|
||||||
|
|
||||||
#define PLOG_D(...) logs::logMsg(logs::DEBUG, __FUNCTION__, __LINE__, true, __VA_ARGS__);
|
#define PLOG_D(...) \
|
||||||
#define PLOG_I(...) logs::logMsg(logs::INFO, __FUNCTION__, __LINE__, true, __VA_ARGS__);
|
if (logs::getLogLevel() <= logs::DEBUG) { \
|
||||||
#define PLOG_W(...) logs::logMsg(logs::WARNING, __FUNCTION__, __LINE__, true, __VA_ARGS__);
|
logs::logMsg(logs::DEBUG, __FUNCTION__, __LINE__, true, __VA_ARGS__); \
|
||||||
#define PLOG_E(...) logs::logMsg(logs::ERROR, __FUNCTION__, __LINE__, true, __VA_ARGS__);
|
}
|
||||||
#define PLOG_F(...) logs::logMsg(logs::FATAL, __FUNCTION__, __LINE__, true, __VA_ARGS__);
|
#define PLOG_I(...) \
|
||||||
|
if (logs::getLogLevel() <= logs::INFO) { \
|
||||||
|
logs::logMsg(logs::INFO, __FUNCTION__, __LINE__, true, __VA_ARGS__); \
|
||||||
|
}
|
||||||
|
#define PLOG_W(...) \
|
||||||
|
if (logs::getLogLevel() <= logs::WARNING) { \
|
||||||
|
logs::logMsg(logs::WARNING, __FUNCTION__, __LINE__, true, __VA_ARGS__); \
|
||||||
|
}
|
||||||
|
#define PLOG_E(...) \
|
||||||
|
if (logs::getLogLevel() <= logs::ERROR) { \
|
||||||
|
logs::logMsg(logs::ERROR, __FUNCTION__, __LINE__, true, __VA_ARGS__); \
|
||||||
|
}
|
||||||
|
#define PLOG_F(...) \
|
||||||
|
if (logs::getLogLevel() <= logs::FATAL) { \
|
||||||
|
logs::logMsg(logs::FATAL, __FUNCTION__, __LINE__, true, __VA_ARGS__); \
|
||||||
|
}
|
||||||
|
|
||||||
enum llevel_t {
|
enum llevel_t {
|
||||||
DEBUG = 0,
|
DEBUG = 0,
|
||||||
@ -58,7 +88,8 @@ enum llevel_t {
|
|||||||
void logMsg(enum llevel_t ll, const char* fn, int ln, bool perr, const char* fmt, ...)
|
void logMsg(enum llevel_t ll, const char* fn, int ln, bool perr, const char* fmt, ...)
|
||||||
__attribute__((format(printf, 5, 6)));
|
__attribute__((format(printf, 5, 6)));
|
||||||
void logStop(int sig);
|
void logStop(int sig);
|
||||||
void logLevel(enum llevel_t ll);
|
void setLogLevel(enum llevel_t ll);
|
||||||
|
enum llevel_t getLogLevel(void);
|
||||||
void logFile(const std::string& log_file, int log_fd);
|
void logFile(const std::string& log_file, int log_fd);
|
||||||
bool logSet();
|
bool logSet();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user