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();
