From 8961f097cdc2ca86ac46bd78abc5f68f05913ac1 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Tue, 21 Apr 2020 10:56:04 +1000 Subject: [PATCH] log: choose sink based on LOG_SINK --- log/log.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/log/log.cpp b/log/log.cpp index c2864e4f..925d6799 100644 --- a/log/log.cpp +++ b/log/log.cpp @@ -13,7 +13,9 @@ #include "../string.hpp" #include "sink/console.hpp" +#include "sink/ostream.hpp" +#include #include #include #include @@ -63,9 +65,28 @@ cruft::log::sink::base& cruft::log::default_sink () { if (unlikely (!s_sink_init)) { - default_sink ( - std::make_unique (PACKAGE_NAME) - ); + static char const *DEFAULT_SINK = "CONSOLE"; + char const *log_sink = getenv ("CRUFT_LOG_SINK") ?: DEFAULT_SINK; + + if (!strcmp (log_sink, "FILE")) { + char const *log_path = getenv ("CRUFT_LOG_PATH"); + default_sink ( + std::make_unique ( + PACKAGE_NAME, + log_path + ) + ); + } else if (strcmp (log_sink, "CONSOLE")) { + default_sink ( + std::make_unique (PACKAGE_NAME) + ); + } else { + std::clog << "Unknown logging sink. Falling back to console.\n"; + default_sink ( + std::make_unique (PACKAGE_NAME) + ); + } + s_sink_init = true; }