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() {}
|
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);
|
sink * add_sink(std::unique_ptr<sink> s);
|
||||||
std::unique_ptr<sink> remove_sink(sink * s);
|
std::unique_ptr<sink> remove_sink(sink * s);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include <psemek/log/log.hpp>
|
#include <psemek/log/log.hpp>
|
||||||
|
#include <psemek/util/to_string.hpp>
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
|
@ -98,14 +99,15 @@ namespace psemek::log
|
||||||
struct default_sink_impl
|
struct default_sink_impl
|
||||||
: sink
|
: 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))
|
: stream_(std::move(stream))
|
||||||
, level_(l)
|
, min_(min)
|
||||||
|
, max_(max)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void put_message(message const & msg) override
|
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 time = clock::to_time_t(msg.time);
|
||||||
auto const tm = safe_localtime(time);
|
auto const tm = safe_localtime(time);
|
||||||
|
|
@ -130,7 +132,8 @@ namespace psemek::log
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<io::ostream> stream_;
|
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");
|
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)
|
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;
|
log::level const stdio_log_level = log::level::debug;
|
||||||
#endif
|
#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");
|
log::register_thread("main");
|
||||||
|
|
||||||
auto const factory = app::make_application_factory();
|
auto const factory = app::make_application_factory();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue