/* -*- 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 */ #include "logger.hpp" #include 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) { char* nfdLog = getenv("NFD_LOG"); if (nfdLog) { std::string level = nfdLog; if (isNumber(nfdLog)) { setLogLevel(boost::lexical_cast(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& operator<<(std::ostream& output, const Logger& obj) { output << obj.getName(); return output; } } // namespace nfd