Added support for logger->info(const T&) call style

This commit is contained in:
gabi 2015-01-05 23:55:05 +02:00
parent 03735e225b
commit 4fd1ac8ac5
2 changed files with 96 additions and 32 deletions

View File

@ -85,9 +85,17 @@ inline spdlog::details::line_logger spdlog::logger::_log_if_enabled(level::level
return details::line_logger(this, lvl, should_log(lvl)); return details::line_logger(this, lvl, should_log(lvl));
} }
template<typename T>
inline spdlog::details::line_logger spdlog::logger::_log_if_enabled(level::level_enum lvl, const T& msg)
{
bool msg_enabled = should_log(lvl);
details::line_logger l(this, lvl, msg_enabled);
l << msg;
return l;
}
// //
// following functions will log only if at the right level // logger.info(cppformat_string, arg1, arg2, arg3, ...) call style
// //
template <typename... Args> template <typename... Args>
inline spdlog::details::line_logger spdlog::logger::trace(const char* fmt, const Args&... args) inline spdlog::details::line_logger spdlog::logger::trace(const char* fmt, const Args&... args)
@ -143,19 +151,75 @@ inline spdlog::details::line_logger spdlog::logger::emerg(const char* fmt, const
return _log_if_enabled(level::emerg, fmt, args...); return _log_if_enabled(level::emerg, fmt, args...);
} }
//
// logger.info(msg) << ".." call style
//
template<typename T>
inline spdlog::details::line_logger spdlog::logger::trace(const T& msg)
{
return _log_if_enabled(level::trace, msg);
}
template<typename T>
inline spdlog::details::line_logger spdlog::logger::debug(const T& msg)
{
return _log_if_enabled(level::debug, msg);
}
template<typename T>
inline spdlog::details::line_logger spdlog::logger::info(const T& msg)
{
return _log_if_enabled(level::info, msg);
}
template<typename T>
inline spdlog::details::line_logger spdlog::logger::notice(const T& msg)
{
return _log_if_enabled(level::notice, msg);
}
template<typename T>
inline spdlog::details::line_logger spdlog::logger::warn(const T& msg)
{
return _log_if_enabled(level::warn, msg);
}
template<typename T>
inline spdlog::details::line_logger spdlog::logger::error(const T& msg)
{
return _log_if_enabled(level::err, msg);
}
template<typename T>
inline spdlog::details::line_logger spdlog::logger::critical(const T& msg)
{
return _log_if_enabled(level::critical, msg);
}
template<typename T>
inline spdlog::details::line_logger spdlog::logger::alert(const T& msg)
{
return _log_if_enabled(level::alert, msg);
}
template<typename T>
inline spdlog::details::line_logger spdlog::logger::emerg(const T& msg)
{
return _log_if_enabled(level::emerg, msg);
}
// //
// support logger.info() << ".." calls // logger.info() << ".." call style
// //
inline spdlog::details::line_logger spdlog::logger::trace() inline spdlog::details::line_logger spdlog::logger::trace()
{ {
return _log_if_enabled(level::trace); return _log_if_enabled(level::trace);
} }
inline spdlog::details::line_logger spdlog::logger::debug() inline spdlog::details::line_logger spdlog::logger::debug()
{ {
return _log_if_enabled(level::debug); return _log_if_enabled(level::debug);

View File

@ -62,34 +62,31 @@ public:
const std::string& name() const; const std::string& name() const;
bool should_log(level::level_enum) const; bool should_log(level::level_enum) const;
template <typename... Args> // logger.info(cppformat_string, arg1, arg2, arg3, ...) call style
details::line_logger trace(const char* fmt, const Args&... args); template <typename... Args> details::line_logger trace(const char* fmt, const Args&... args);
template <typename... Args> details::line_logger debug(const char* fmt, const Args&... args);
template <typename... Args> template <typename... Args> details::line_logger info(const char* fmt, const Args&... args);
details::line_logger debug(const char* fmt, const Args&... args); template <typename... Args> details::line_logger notice(const char* fmt, const Args&... args);
template <typename... Args> details::line_logger warn(const char* fmt, const Args&... args);
template <typename... Args>
details::line_logger info(const char* fmt, const Args&... args);
template <typename... Args>
details::line_logger notice(const char* fmt, const Args&... args);
template <typename... Args>
details::line_logger warn(const char* fmt, const Args&... args);
template <typename... Args> details::line_logger error(const char* fmt, const Args&... args); template <typename... Args> details::line_logger error(const char* fmt, const Args&... args);
template <typename... Args> details::line_logger critical(const char* fmt, const Args&... args);
template <typename... Args> template <typename... Args> details::line_logger alert(const char* fmt, const Args&... args);
details::line_logger critical(const char* fmt, const Args&... args); template <typename... Args> details::line_logger emerg(const char* fmt, const Args&... args);
template <typename... Args>
details::line_logger alert(const char* fmt, const Args&... args);
template <typename... Args>
details::line_logger emerg(const char* fmt, const Args&... args);
//API to support logger.info() << ".." call style // logger.info(msg) << ".." call style
template <typename T> details::line_logger trace(const T&);
template <typename T> details::line_logger debug(const T&);
template <typename T> details::line_logger info(const T&);
template <typename T> details::line_logger notice(const T&);
template <typename T> details::line_logger warn(const T&);
template <typename T> details::line_logger error(const T&);
template <typename T> details::line_logger critical(const T&);
template <typename T> details::line_logger alert(const T&);
template <typename T> details::line_logger emerg(const T&);
// logger.info() << ".." call style
details::line_logger trace(); details::line_logger trace();
details::line_logger debug(); details::line_logger debug();
details::line_logger info(); details::line_logger info();
@ -101,6 +98,7 @@ public:
details::line_logger emerg(); details::line_logger emerg();
// Create log message with the given level, no matter what is the actual logger's level // Create log message with the given level, no matter what is the actual logger's level
template <typename... Args> template <typename... Args>
details::line_logger force_log(level::level_enum lvl, const char* fmt, const Args&... args); details::line_logger force_log(level::level_enum lvl, const char* fmt, const Args&... args);
@ -117,6 +115,8 @@ protected:
details::line_logger _log_if_enabled(level::level_enum lvl); details::line_logger _log_if_enabled(level::level_enum lvl);
template <typename... Args> template <typename... Args>
details::line_logger _log_if_enabled(level::level_enum lvl, const char* fmt, const Args&... args); details::line_logger _log_if_enabled(level::level_enum lvl, const char* fmt, const Args&... args);
template<typename T>
inline details::line_logger _log_if_enabled(level::level_enum lvl, const T& msg);
friend details::line_logger; friend details::line_logger;