diff --git a/daemon/core/logger.cpp b/daemon/core/logger.cpp
index 14dd380..928b112 100644
--- a/daemon/core/logger.cpp
+++ b/daemon/core/logger.cpp
@@ -7,14 +7,69 @@
  */
 
 #include "logger.hpp"
+#include <boost/algorithm/string.hpp>
 
-namespace nfd
+namespace nfd {
+
+inline static bool
+isNumber(const std::string& s)
 {
+  if (s.empty())
+    return false;
+
+  for (std::string::const_iterator i = s.begin(); i != s.end(); ++i)
+    {
+      if (!std::isdigit(*i))
+        return false;
+    }
+
+  return true;
+}
 
 Logger::Logger(const std::string& name)
-  : m_moduleName(name),
-    m_isEnabled(true)
+  : m_moduleName(name)
 {
+  char* nfdLog = getenv("NFD_LOG");
+  if (nfdLog)
+    {
+      std::string level = nfdLog;
+      if (isNumber(nfdLog))
+        {
+          setLogLevel(boost::lexical_cast<uint32_t>(nfdLog));
+        }
+      else if (boost::iequals(level, "none"))
+        {
+          m_enabledLogLevel = LOG_NONE;
+        }
+      else if (boost::iequals(level, "error"))
+        {
+          m_enabledLogLevel = LOG_ERROR;
+        }
+      else if (boost::iequals(level, "warn"))
+        {
+          m_enabledLogLevel = LOG_WARN;
+        }
+      else if (boost::iequals(level, "info"))
+        {
+          m_enabledLogLevel = LOG_INFO;
+        }
+      else if (boost::iequals(level, "debug"))
+        {
+          m_enabledLogLevel = LOG_DEBUG;
+        }
+      else if (boost::iequals(level, "trace"))
+        {
+          m_enabledLogLevel = LOG_TRACE;
+        }
+      else
+        {
+          m_enabledLogLevel = LOG_ALL;
+        }
+    }
+  else
+    {
+      m_enabledLogLevel = LOG_WARN;
+    }
 }
 
 std::ostream&
