diff --git a/tests/core/logger.cpp b/tests/core/logger.cpp
new file mode 100644
index 0000000..35fd66c
--- /dev/null
+++ b/tests/core/logger.cpp
@@ -0,0 +1,170 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (C) 2014 Named Data Networking Project
+ * See COPYING for copyright and distribution information.
+ *
+ * Author: Ilya Moiseenko <iliamo@ucla.edu>
+ */
+
+#include "core/logger.hpp"
+#include <boost/test/unit_test.hpp>
+#include <iostream>
+
+
+namespace nfd {
+
+BOOST_AUTO_TEST_SUITE(CoreLogger)
+
+BOOST_AUTO_TEST_CASE(Warn)
+{
+  std::stringstream input;
+  input << "warnTest";
+  
+  std::stringstream buffer;
+
+  // save cerr's buffer here
+  std::streambuf* sbuf = std::cerr.rdbuf();
+
+  // redirect cerr to the buffer
+  std::cerr.rdbuf(buffer.rdbuf());
+
+  NFD_LOG_INIT("WarnTest");
+  NFD_LOG_WARN(input);
+  
+  // redirect cerr back
+  std::cerr.rdbuf(sbuf);
+  
+  std::stringstream trueValue;
+  trueValue << "WARNING: [WarnTest] " << input <<"\n";
+  
+  BOOST_CHECK_EQUAL(buffer.str(), trueValue.str());
+}
+
+BOOST_AUTO_TEST_CASE(Debug)
+{
+  std::stringstream input;
+  input << "debugTest";
+  
+  std::stringstream buffer;
+
+  // save cerr's buffer here
+  std::streambuf* sbuf = std::cerr.rdbuf();
+
+  // redirect cerr to the buffer
+  std::cerr.rdbuf(buffer.rdbuf());
+
+  NFD_LOG_INIT("DebugTest");
+  NFD_LOG_DEBUG(input);
+  
+  // redirect cerr back
+  std::cerr.rdbuf(sbuf);
+  
+  std::stringstream trueValue;
+  trueValue << "DEBUG: [DebugTest] " << input <<"\n";
+  
+  BOOST_CHECK_EQUAL(buffer.str(), trueValue.str());
+}
+
+BOOST_AUTO_TEST_CASE(Info)
+{
+  std::stringstream input;
+  input << "infotest";
+  
+  std::stringstream buffer;
+
+  // save cerr's buffer here
+  std::streambuf* sbuf = std::cerr.rdbuf();
+
+  // redirect cerr to the buffer
+  std::cerr.rdbuf(buffer.rdbuf());
+
+  NFD_LOG_INIT("InfoTest");
+  NFD_LOG_INFO(input);
+  
+  // redirect cerr back
+  std::cerr.rdbuf(sbuf);
+  
+  std::stringstream trueValue;
+  trueValue << "INFO: [InfoTest] " << input <<"\n";
+  
+  BOOST_CHECK_EQUAL(buffer.str(), trueValue.str());
+}
+
+BOOST_AUTO_TEST_CASE(Fatal)
+{
+  std::stringstream input;
+  input << "fataltest";
+  
+  std::stringstream buffer;
+
+  // save cerr's buffer here
+  std::streambuf* sbuf = std::cerr.rdbuf();
+
+  // redirect cerr to the buffer
+  std::cerr.rdbuf(buffer.rdbuf());
+
+  NFD_LOG_INIT("FatalTest");
+  NFD_LOG_FATAL(input);
+  
+  // redirect cerr back
+  std::cerr.rdbuf(sbuf);
+  
+  std::stringstream trueValue;
+  trueValue << "FATAL: [FatalTest] " << input <<"\n";
+  
+  BOOST_CHECK_EQUAL(buffer.str(), trueValue.str());
+}
+
+BOOST_AUTO_TEST_CASE(Error)
+{
+  std::stringstream input;
+  input << "errortest";
+  
+  std::stringstream buffer;
+
+  // save cerr's buffer here
+  std::streambuf* sbuf = std::cerr.rdbuf();
+
+  // redirect cerr to the buffer
+  std::cerr.rdbuf(buffer.rdbuf());
+
+  NFD_LOG_INIT("ErrorTest");
+  NFD_LOG_ERROR(input);
+  
+  // redirect cerr back
+  std::cerr.rdbuf(sbuf);
+  
+  std::stringstream trueValue;
+  trueValue << "ERROR: [ErrorTest] " << input <<"\n";
+  
+  BOOST_CHECK_EQUAL(buffer.str(), trueValue.str());
+}
+
+BOOST_AUTO_TEST_CASE(Trace)
+{
+  std::stringstream input;
+  input << "tracetest";
+  
+  std::stringstream buffer;
+
+  // save cerr's buffer here
+  std::streambuf* sbuf = std::cerr.rdbuf();
+
+  // redirect cerr to the buffer
+  std::cerr.rdbuf(buffer.rdbuf());
+
+  NFD_LOG_INIT("TraceTest");
+  NFD_LOG_TRACE(input);
+  
+  // redirect cerr back
+  std::cerr.rdbuf(sbuf);
+  
+  std::stringstream trueValue;
+  trueValue << "TRACE: [TraceTest] " << input <<"\n";
+  
+  BOOST_CHECK_EQUAL(buffer.str(), trueValue.str());
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} // namespace nfd
