Setup default logging sinks to output to stdout/stderr based on log level
This commit is contained in:
parent
128abc453e
commit
248bd049db
3 changed files with 12 additions and 8 deletions
|
|
@ -47,7 +47,7 @@ namespace psemek::log
|
|||
virtual ~sink() {}
|
||||
};
|
||||
|
||||
std::unique_ptr<sink> default_sink(std::unique_ptr<io::ostream> stream, level l);
|
||||
std::unique_ptr<sink> default_sink(std::unique_ptr<io::ostream> stream, level min, level max);
|
||||
|
||||
sink * add_sink(std::unique_ptr<sink> s);
|
||||
std::unique_ptr<sink> remove_sink(sink * s);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <psemek/log/log.hpp>
|
||||
#include <psemek/util/to_string.hpp>
|
||||
|
||||
#include <chrono>
|
||||
#include <ctime>
|
||||
|
|
@ -98,14 +99,15 @@ namespace psemek::log
|
|||
struct default_sink_impl
|
||||
: sink
|
||||
{
|
||||
default_sink_impl(std::unique_ptr<io::ostream> stream, level l)
|
||||
default_sink_impl(std::unique_ptr<io::ostream> 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<io::ostream> stream_;
|
||||
level level_;
|
||||
level min_;
|
||||
level max_;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -184,9 +187,9 @@ namespace psemek::log
|
|||
put_message(level::info, "Thread \"" + name + "\" unregistered");
|
||||
}
|
||||
|
||||
std::unique_ptr<sink> default_sink(std::unique_ptr<io::ostream> stream, level l)
|
||||
std::unique_ptr<sink> default_sink(std::unique_ptr<io::ostream> stream, level min, level max)
|
||||
{
|
||||
return std::make_unique<default_sink_impl>(std::move(stream), l);
|
||||
return std::make_unique<default_sink_impl>(std::move(stream), min, max);
|
||||
}
|
||||
|
||||
sink * add_sink(std::unique_ptr<sink> s)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue