diff --git a/core/logging.cpp b/core/logging.cpp
deleted file mode 100644
index 08030c9..0000000
--- a/core/logging.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2013-2016, Regents of the University of California.
- *
- * This file is part of ChronoShare, a decentralized file sharing application over NDN.
- *
- * ChronoShare is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation, either
- * version 3 of the License, or (at your option) any later version.
- *
- * ChronoShare is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received copies of the GNU General Public License along with
- * ChronoShare, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ChronoShare authors and contributors.
- */
-
-#include "logging.hpp"
-
-#include <log4cxx/basicconfigurator.h>
-#include <log4cxx/consoleappender.h>
-#include <log4cxx/defaultconfigurator.h>
-#include <log4cxx/helpers/exception.h>
-#include <log4cxx/level.h>
-#include <log4cxx/logger.h>
-#include <log4cxx/patternlayout.h>
-#include <log4cxx/propertyconfigurator.h>
-
-#include <unistd.h>
-
-namespace ndn {
-namespace chronoshare {
-
-using namespace log4cxx;
-using namespace log4cxx::helpers;
-
-void
-INIT_LOGGERS()
-{
-  static bool configured = false;
-
-  if (configured)
-    return;
-
-  if (access("log4cxx.properties", R_OK) == 0)
-    PropertyConfigurator::configureAndWatch("log4cxx.properties");
-  else {
-    PatternLayoutPtr layout(new PatternLayout("%d{HH:mm:ss} %p %c{1} - %m%n"));
-    ConsoleAppenderPtr appender(new ConsoleAppender(layout));
-
-    BasicConfigurator::configure(appender);
-    Logger::getRootLogger()->setLevel(log4cxx::Level::getInfo());
-  }
-
-  configured = true;
-}
-
-} // chronoshare
-} // ndn
diff --git a/core/logging.hpp b/core/logging.hpp
index 86e1bf0..b7c3f34 100644
--- a/core/logging.hpp
+++ b/core/logging.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2016, Regents of the University of California.
+ * Copyright (c) 2013-2017, Regents of the University of California.
  *
  * This file is part of ChronoShare, a decentralized file sharing application over NDN.
  *
@@ -21,43 +21,32 @@
 #ifndef CHRONOSHARE_CORE_LOGGING_HPP
 #define CHRONOSHARE_CORE_LOGGING_HPP
 
-#include "core/chronoshare-config.hpp"
-
-#include <log4cxx/logger.h>
+#include <ndn-cxx/util/logger.hpp>
 
 namespace ndn {
 namespace chronoshare {
 
-#define MEMBER_LOGGER static log4cxx::LoggerPtr staticModuleLogger;
+#define _LOG_INIT(name) NDN_LOG_INIT(chronoshare.name)
 
-#define INIT_MEMBER_LOGGER(className, name) \
-  log4cxx::LoggerPtr className::staticModuleLogger = log4cxx::Logger::getLogger(name);
+#define _LOG_DEBUG(x) NDN_LOG_DEBUG(x)
 
-#define INIT_LOGGER(name) \
-  static log4cxx::LoggerPtr staticModuleLogger = log4cxx::Logger::getLogger(name);
+#define _LOG_TRACE(x) NDN_LOG_TRACE(x)
 
-#define _LOG_DEBUG(x) LOG4CXX_DEBUG(staticModuleLogger, x);
-
-#define _LOG_TRACE(x) LOG4CXX_TRACE(staticModuleLogger, x);
-
-#define _LOG_FUNCTION(x) LOG4CXX_TRACE(staticModuleLogger, __FUNCTION__ << "(" << x << ")");
-
-#define _LOG_FUNCTION_NOARGS LOG4CXX_TRACE(staticModuleLogger, __FUNCTION__ << "()");
-
-#define _LOG_ERROR(x) LOG4CXX_ERROR(staticModuleLogger, x);
+#define _LOG_ERROR(x) NDN_LOG_ERROR(x)
 
 #define _LOG_ERROR_COND(cond, x) \
-  if (cond) {                    \
-    _LOG_ERROR(x)                \
-  }
+  do {                           \
+    if (cond) {                  \
+      _LOG_ERROR(x);             \
+    }                            \
+  } while (false)
 
 #define _LOG_DEBUG_COND(cond, x) \
-  if (cond) {                    \
-    _LOG_DEBUG(x)                \
-  }
-
-void
-INIT_LOGGERS();
+  do {                           \
+    if (cond) {                  \
+      _LOG_DEBUG(x);             \
+    }                            \
+  } while (false)
 
 } // chronoshare
 } // ndn
