src: Add additional log levels
refs: #1935
Change-Id: Ie3ef3f04fbcadd8fb9ee6f3aade4a35bd2a88105
diff --git a/src/conf-file-processor.cpp b/src/conf-file-processor.cpp
index 5f3c147..726d2af 100644
--- a/src/conf-file-processor.cpp
+++ b/src/conf-file-processor.cpp
@@ -189,13 +189,15 @@
}
try {
+
std::string logLevel = section.get<string>("log-level");
- if ( boost::iequals(logLevel, "info") || boost::iequals(logLevel, "debug")) {
+
+ if (isValidLogLevel(logLevel)) {
m_nlsr.getConfParameter().setLogLevel(logLevel);
}
else {
- std::cerr << "Wrong value for log-level ";
- std::cerr << "Allowed value: INFO, DEBUG" << std::endl;
+ std::cerr << "Invalid value for log-level ";
+ std::cerr << "Valid values: ALL, TRACE, DEBUG, INFO, WARN, ERROR, NONE" << std::endl;
return false;
}
}
diff --git a/src/logger.cpp b/src/logger.cpp
index 933f4a3..a82f5a9 100644
--- a/src/logger.cpp
+++ b/src/logger.cpp
@@ -27,24 +27,48 @@
#include <log4cxx/helpers/exception.h>
#include <log4cxx/rollingfileappender.h>
+#include <boost/algorithm/string.hpp>
+
#include "logger.hpp"
void
-INIT_LOGGERS(const std::string& logDir)
+INIT_LOGGERS(const std::string& logDir, const std::string& logLevel)
{
static bool configured = false;
- if (configured) return;
+
+ if (configured) {
+ return;
+ }
log4cxx::PatternLayoutPtr
- layout(new log4cxx::PatternLayout("%date{yyyyMMddHHmmssSSS} %c %L: %m%n"));
+ layout(new log4cxx::PatternLayout("%date{yyyyMMddHHmmssSSS} %p: [%c] %m%n"));
+
log4cxx::RollingFileAppender* rollingFileAppender =
new log4cxx::RollingFileAppender(layout, logDir+"/nlsr.log", true);
+
rollingFileAppender->setMaxFileSize("10MB");
rollingFileAppender->setMaxBackupIndex(10);
+
log4cxx::helpers::Pool p;
rollingFileAppender->activateOptions(p);
+
log4cxx::BasicConfigurator::configure(log4cxx::AppenderPtr(rollingFileAppender));
- log4cxx::Logger::getRootLogger()->setLevel(log4cxx::Level::getDebug());
+
+ if (boost::iequals(logLevel, "none")) {
+ log4cxx::Logger::getRootLogger()->setLevel(log4cxx::Level::getOff());
+ }
+ else {
+ log4cxx::Logger::getRootLogger()->setLevel(log4cxx::Level::toLevel(logLevel));
+ }
configured = true;
}
+
+bool
+isValidLogLevel(const std::string& logLevel)
+{
+ return boost::iequals(logLevel, "all") || boost::iequals(logLevel, "trace") ||
+ boost::iequals(logLevel, "debug") || boost::iequals(logLevel, "info") ||
+ boost::iequals(logLevel, "warn") || boost::iequals(logLevel, "error") ||
+ boost::iequals(logLevel, "none");
+}
diff --git a/src/logger.hpp b/src/logger.hpp
index 6a487fb..267f30f 100644
--- a/src/logger.hpp
+++ b/src/logger.hpp
@@ -25,17 +25,31 @@
#include <log4cxx/logger.h>
-
#define INIT_LOGGER(name) \
static log4cxx::LoggerPtr staticModuleLogger = log4cxx::Logger::getLogger(name)
+#define _LOG_TRACE(x) \
+ LOG4CXX_TRACE(staticModuleLogger, x)
+
#define _LOG_DEBUG(x) \
- LOG4CXX_DEBUG(staticModuleLogger,x)
+ LOG4CXX_DEBUG(staticModuleLogger, x)
#define _LOG_INFO(x) \
LOG4CXX_INFO(staticModuleLogger, x)
+#define _LOG_WARN(x) \
+ LOG4CXX_WARN(staticModuleLogger, x)
+
+#define _LOG_ERROR(x) \
+ LOG4CXX_ERROR(staticModuleLogger, x)
+
+#define _LOG_FATAL(x) \
+ LOG4CXX_FATAL(staticModuleLogger, x);
+
void
-INIT_LOGGERS(const std::string& logDir);
+INIT_LOGGERS(const std::string& logDir, const std::string& logLevel);
+
+bool
+isValidLogLevel(const std::string& logLevel);
#endif // NLSR_LOGGER_HPP
diff --git a/src/main.cpp b/src/main.cpp
index 752843a..aafca1d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -60,8 +60,10 @@
std::cerr << "Error in configuration file processing! Exiting from NLSR" << std::endl;
return EXIT_FAILURE;
}
- INIT_LOGGERS(nlsr.getConfParameter().getLogDir());
+
+ INIT_LOGGERS(nlsr.getConfParameter().getLogDir(), nlsr.getConfParameter().getLogLevel());
INIT_LOGGER("Main");
+
nlsr.initialize();
if (nlsr.getIsSetDaemonProcess()) {
nlsr.daemonize();