diff --git a/common/include/villas/log.hpp b/common/include/villas/log.hpp index 8071334c2..a2711434f 100644 --- a/common/include/villas/log.hpp +++ b/common/include/villas/log.hpp @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -48,19 +49,18 @@ class Log { public: using Level = spdlog::level::level_enum; + using DefaultSink = std::shared_ptr; using DistSink = std::shared_ptr; protected: - Logger logger; DistSink sinks; + DefaultSink sink; Level level; std::string pattern; /**< Logging format. */ std::string prefix; /**< Prefix each line with this string. */ - void init(); - public: Log(Level level = Level::info); diff --git a/common/lib/log.cpp b/common/lib/log.cpp index 45e7a7c7f..a9109e8a4 100644 --- a/common/lib/log.cpp +++ b/common/lib/log.cpp @@ -23,7 +23,6 @@ #include #include -#include #include #include @@ -36,31 +35,27 @@ using namespace villas; Log villas::logging; Log::Log(Level lvl) : - level(lvl) -{ - logger = logging.get("log"); -} - -void Log::init() + level(lvl), + pattern("%H:%M:%S %^%l%$ %n: %v") { char *p = getenv("VILLAS_LOG_PREFIX"); if (p) prefix = p; - setLevel(level); - setPattern("%H:%M:%S %^%l%$ %n: %v"); - sinks = std::make_shared(); + setLevel(level); + setPattern(pattern); + // Default sink - auto sink = std::make_shared(); + sink = std::make_shared(); sinks->add_sink(sink); } int Log::getWidth() { - int width = Terminal::getCols() - 25; + int width = Terminal::getCols() - 50; if (!prefix.empty()) width -= prefix.length(); @@ -72,11 +67,8 @@ Logger Log::get(const std::string &name) { Logger logger = spdlog::get(name); - if (not sinks) - init(); - if (not logger) { - logger = std::make_shared(name, sinks); + logger = std::make_shared(name, sink); logger->set_level(level); logger->set_pattern(prefix + pattern); @@ -154,6 +146,7 @@ void Log::setPattern(const std::string &pat) pattern = pat; spdlog::set_pattern(pattern, spdlog::pattern_time_type::utc); + //sinks.set_pattern(pattern); } void Log::setLevel(Level lvl) @@ -161,6 +154,7 @@ void Log::setLevel(Level lvl) level = lvl; spdlog::set_level(lvl); + //sinks.set_level(lvl); } void Log::setLevel(const std::string &lvl)