diff --git a/libs/log/include/psemek/log/log.hpp b/libs/log/include/psemek/log/log.hpp index 07db955a..7deaa7f4 100644 --- a/libs/log/include/psemek/log/log.hpp +++ b/libs/log/include/psemek/log/log.hpp @@ -47,7 +47,7 @@ namespace psemek::log virtual ~sink() {} }; - std::unique_ptr default_sink(std::unique_ptr stream, level l); + std::unique_ptr default_sink(std::unique_ptr stream, level min, level max); sink * add_sink(std::unique_ptr s); std::unique_ptr remove_sink(sink * s); diff --git a/libs/log/source/log.cpp b/libs/log/source/log.cpp index 1c6f5ca5..3ff85ec4 100644 --- a/libs/log/source/log.cpp +++ b/libs/log/source/log.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -98,14 +99,15 @@ namespace psemek::log struct default_sink_impl : sink { - default_sink_impl(std::unique_ptr stream, level l) + default_sink_impl(std::unique_ptr stream, level min, level max) : stream_(std::move(stream)) - , level_(l) + , min_(min) + , max_(max) {} void put_message(message const & msg) override { - if (msg.level < level_) return; + if (msg.level < min_ || msg.level > max_) return; auto const time = clock::to_time_t(msg.time); auto const tm = safe_localtime(time); @@ -130,7 +132,8 @@ namespace psemek::log private: std::unique_ptr stream_; - level level_; + level min_; + level max_; }; } @@ -184,9 +187,9 @@ namespace psemek::log put_message(level::info, "Thread \"" + name + "\" unregistered"); } - std::unique_ptr default_sink(std::unique_ptr stream, level l) + std::unique_ptr default_sink(std::unique_ptr stream, level min, level max) { - return std::make_unique(std::move(stream), l); + return std::make_unique(std::move(stream), min, max); } sink * add_sink(std::unique_ptr s) diff --git a/libs/sdl2/source/main.cpp b/libs/sdl2/source/main.cpp index deea9985..db692325 100644 --- a/libs/sdl2/source/main.cpp +++ b/libs/sdl2/source/main.cpp @@ -22,7 +22,8 @@ int main(int argc, char ** argv) try log::level const stdio_log_level = log::level::debug; #endif - log::add_sink(log::default_sink(io::std_out(), stdio_log_level)); + log::add_sink(log::default_sink(io::std_out(), stdio_log_level, log::level::info)); + log::add_sink(log::default_sink(io::std_err(), log::level::warning, log::level::error)); log::register_thread("main"); auto const factory = app::make_application_factory();