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;
|
||||
break;
|
||||
case 'v':
|
||||
logs::logLevel(logs::DEBUG);
|
||||
logs::setLogLevel(logs::DEBUG);
|
||||
break;
|
||||
case 'q':
|
||||
logs::logLevel(logs::WARNING);
|
||||
logs::setLogLevel(logs::WARNING);
|
||||
break;
|
||||
case 'Q':
|
||||
logs::logLevel(logs::FATAL);
|
||||
logs::setLogLevel(logs::FATAL);
|
||||
break;
|
||||
case 'e':
|
||||
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()) {
|
||||
switch (njc.log_level()) {
|
||||
case nsjail::LogLevel::DEBUG:
|
||||
logs::logLevel(logs::DEBUG);
|
||||
logs::setLogLevel(logs::DEBUG);
|
||||
break;
|
||||
case nsjail::LogLevel::INFO:
|
||||
logs::logLevel(logs::INFO);
|
||||
logs::setLogLevel(logs::INFO);
|
||||
break;
|
||||
case nsjail::LogLevel::WARNING:
|
||||
logs::logLevel(logs::WARNING);
|
||||
logs::setLogLevel(logs::WARNING);
|
||||
break;
|
||||
case nsjail::LogLevel::ERROR:
|
||||
logs::logLevel(logs::ERROR);
|
||||
logs::setLogLevel(logs::ERROR);
|
||||
break;
|
||||
case nsjail::LogLevel::FATAL:
|
||||
logs::logLevel(logs::FATAL);
|
||||
logs::setLogLevel(logs::FATAL);
|
||||
break;
|
||||
default:
|
||||
LOG_E("Unknown log_level: %d", njc.log_level());
|
||||
|
6
logs.cc
6
logs.cc
@ -70,10 +70,14 @@ bool logSet() {
|
||||
return _log_set;
|
||||
}
|
||||
|
||||
void logLevel(enum llevel_t ll) {
|
||||
void setLogLevel(enum llevel_t ll) {
|
||||
_log_level = ll;
|
||||
}
|
||||
|
||||
enum llevel_t getLogLevel(void) {
|
||||
return _log_level;
|
||||
}
|
||||
|
||||
void logFile(const std::string& log_file, int log_fd) {
|
||||
_log_set = true;
|
||||
int newlogfd = -1;
|
||||
|
53
logs.h
53
logs.h
@ -33,17 +33,47 @@ namespace logs {
|
||||
#define LOG_HELP_BOLD(...) \
|
||||
logs::logMsg(logs::HELP_BOLD, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
||||
|
||||
#define LOG_D(...) logs::logMsg(logs::DEBUG, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
||||
#define LOG_I(...) logs::logMsg(logs::INFO, __FUNCTION__, __LINE__, false, __VA_ARGS__);
|
||||
#define LOG_W(...) logs::logMsg(logs::WARNING, __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_D(...) \
|
||||
if (logs::getLogLevel() <= logs::DEBUG) { \
|
||||
logs::logMsg(logs::DEBUG, __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_I(...) logs::logMsg(logs::INFO, __FUNCTION__, __LINE__, true, __VA_ARGS__);
|
||||
#define PLOG_W(...) logs::logMsg(logs::WARNING, __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_D(...) \
|
||||
if (logs::getLogLevel() <= logs::DEBUG) { \
|
||||
logs::logMsg(logs::DEBUG, __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 {
|
||||
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, ...)
|
||||
__attribute__((format(printf, 5, 6)));
|
||||
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);
|
||||
bool logSet();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user