diff --git a/include/spdlog/details/logger_impl.h b/include/spdlog/details/logger_impl.h index 2b27f105..2de9d6d3 100644 --- a/include/spdlog/details/logger_impl.h +++ b/include/spdlog/details/logger_impl.h @@ -197,8 +197,42 @@ inline void spdlog::logger::critical(const T& msg) log(level::critical, msg); } +inline spdlog::ostream spdlog::logger::log(level::level_enum lvl) +{ + if (!should_log(lvl)) + + return ostream(this, lvl); +} + +inline spdlog::ostream spdlog::logger::trace() +{ + return log(level::trace); +} +inline spdlog::ostream spdlog::logger::debug() +{ + return log(level::debug); +} +inline spdlog::ostream spdlog::logger::info() +{ + return log(level::info); +} + +inline spdlog::ostream spdlog::logger::warn() +{ + return log(level::warn); +} + +inline spdlog::ostream spdlog::logger::error() +{ + return log(level::err); +} + +inline spdlog::ostream spdlog::logger::critical() +{ + return log(level::critical); +} // // name and level diff --git a/include/spdlog/details/stream_impl.h b/include/spdlog/details/stream_impl.h new file mode 100644 index 00000000..23661e32 --- /dev/null +++ b/include/spdlog/details/stream_impl.h @@ -0,0 +1,29 @@ +// +// Copyright(c) 2017 Benoit Leforestier. +// Distributed under the MIT License (http://opensource.org/licenses/MIT) +// + +#pragma once + +template +spdlog::basic_streambuf::basic_streambuf(spdlog::logger* plogger, spdlog::level::level_enum lvl) : +{ +} + +template +spdlog::basic_streambuf::basic_streambuf(basic_streambuf&& rhs) : +{ +} + +template +spdlog::basic_streambuf::~basic_streambuf() +{ + +} + +template +std::streamsize spdlog::basic_streambuf::xsputn(const char_type* __s, std::streamsize __n) +{ + + +} diff --git a/include/spdlog/logger.h b/include/spdlog/logger.h index a2deb51d..095af8d5 100644 --- a/include/spdlog/logger.h +++ b/include/spdlog/logger.h @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -52,6 +53,14 @@ public: template void error(const T&); template void critical(const T&); + ostream log(level::level_enum lvl); + ostream trace(); + ostream debug(); + ostream info(); + ostream warn(); + ostream error(); + ostream critical(); + bool should_log(level::level_enum) const; void set_level(level::level_enum); level::level_enum level() const; @@ -71,6 +80,9 @@ public: const std::vector& sinks() const; protected: + template + friend class basic_streambuf; + virtual void _sink_it(details::log_msg&); virtual void _set_pattern(const std::string&); virtual void _set_formatter(formatter_ptr); @@ -92,3 +104,4 @@ protected: } #include +#include diff --git a/include/spdlog/stream.h b/include/spdlog/stream.h new file mode 100644 index 00000000..dc1f5179 --- /dev/null +++ b/include/spdlog/stream.h @@ -0,0 +1,26 @@ +// +// Copyright(c) 2017 Benoit Leforestier. +// Distributed under the MIT License (http://opensource.org/licenses/MIT) +// + +#pragma once + +#include + +namespace spdlog +{ + + + + + + + + + + + + + + +}