src: Add additional log levels
refs: #1935
Change-Id: Ie3ef3f04fbcadd8fb9ee6f3aade4a35bd2a88105
diff --git a/nlsr.conf b/nlsr.conf
index 48f34a6..f204d12 100644
--- a/nlsr.conf
+++ b/nlsr.conf
@@ -14,9 +14,21 @@
; InterestLifetime (in seconds) for LSA fetching
lsa-interest-lifetime 4 ; default value 4. Valid values 1-60
- ; log-level is to set the levels of log for NLSR
+ ; log-level is used to set the logging level for NLSR.
+ ; All debugging levels listed above the selected value are enabled.
+ ;
+ ; Valid values:
+ ;
+ ; NONE ; no messages
+ ; ERROR ; error messages
+ ; WARN ; warning messages
+ ; INFO ; informational messages (default)
+ ; DEBUG ; debugging messages
+ ; TRACE ; trace messages (most verbose)
+ ; ALL ; all messages
- log-level INFO ; default value INFO, valid value DEBUG, INFO
+ log-level INFO
+
log-dir /var/log/nlsr/ ; path for log directory (Absolute path)
seq-dir /var/lib/nlsr/ ; path for sequence directory (Absolute path)
}
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();
diff --git a/tests/test-lsdb.cpp b/tests/test-lsdb.cpp
index b6305b9..430458d 100644
--- a/tests/test-lsdb.cpp
+++ b/tests/test-lsdb.cpp
@@ -35,7 +35,7 @@
BOOST_AUTO_TEST_CASE(LsdbRemoveAndExists)
{
- INIT_LOGGERS("/tmp");
+ INIT_LOGGERS("/tmp", "DEBUG");
Nlsr nlsr1;
ndn::time::system_clock::TimePoint testTimePoint = ndn::time::system_clock::now();