diff --git a/daemon/mgmt/log-config-section.cpp b/daemon/mgmt/log-config-section.cpp
index 9d8168c..22d9421 100644
--- a/daemon/mgmt/log-config-section.cpp
+++ b/daemon/mgmt/log-config-section.cpp
@@ -26,64 +26,14 @@
 #include "log-config-section.hpp"
 
 #include <ndn-cxx/util/logger.hpp>
-#include <ndn-cxx/util/logging.hpp>
 
 namespace nfd {
 namespace log {
 
-static ndn::util::LogLevel
-parseLogLevel(const ConfigSection& item, const std::string& key)
-{
-  try {
-    return ndn::util::parseLogLevel(item.get_value<std::string>());
-  }
-  catch (const std::invalid_argument&) {
-    NDN_THROW_NESTED(ConfigFile::Error("Invalid log level for '" + key + "' in section 'log'"));
-  }
-}
-
 static void
 onConfig(const ConfigSection& section, bool isDryRun, const std::string&)
 {
-  // log
-  // {
-  //   ; default_level specifies the logging level for modules
-  //   ; that are not explicitly named. All debugging levels
-  //   ; listed above the selected value are enabled.
-  //
-  //   default_level INFO
-  //
-  //   ; You may also override the default for specific modules:
-  //
-  //   FibManager DEBUG
-  //   Forwarder WARN
-  // }
-
-  auto defaultLevel = ndn::util::LogLevel::INFO;
-  auto item = section.get_child_optional("default_level");
-  if (item) {
-    defaultLevel = parseLogLevel(*item, "default_level");
-  }
-  if (!isDryRun) {
-    // default_level applies only to NFD loggers
-    ndn::util::Logging::setLevel("nfd.*", defaultLevel);
-  }
-
-  for (const auto& i : section) {
-    if (i.first == "default_level") {
-      // do nothing
-    }
-    else {
-      auto level = parseLogLevel(i.second, i.first);
-      if (!isDryRun) {
-        if (i.first.find('.') == std::string::npos)
-          // backward compat: assume unqualified logger names refer to NFD loggers
-          ndn::util::Logging::setLevel("nfd." + i.first, level);
-        else
-          ndn::util::Logging::setLevel(i.first, level);
-      }
-    }
-  }
+  // controlled only through NS-3 logger configuration
 }
 
 void
