Imported Upstream version 1.7.0
[platform/core/ml/nnfw.git] / compiler / luci / log / src / Log.cpp
index 7e16340..c26bf30 100644 (file)
@@ -16,6 +16,8 @@
 
 #include "luci/Log.h"
 
+#include <luci/UserSettings.h>
+
 #include <cassert>
 #include <cstdlib>
 #include <iostream>
@@ -36,6 +38,11 @@ template <> bool safecast<bool>(const char *s, const bool &value)
   return (s == nullptr) ? value : (std::stoi(s) != 0);
 }
 
+template <> int safecast<int>(const char *s, const int &value)
+{
+  return (s == nullptr) ? value : std::stoi(s);
+}
+
 } // namespace
 
 //
@@ -57,8 +64,16 @@ namespace luci
 
 LoggerConfig::LoggerConfig()
 {
-  // Turn on logging if LUCI_LOG is set as non-zero value
-  _enabled = safecast<bool>(std::getenv("LUCI_LOG"), false);
+  auto settings = luci::UserSettings::settings();
+
+  _show_warn = !settings->get(luci::UserSettings::Key::MuteWarnings);
+
+  // Turn on info logging if LUCI_LOG is set as non-zero value
+  _show_info = safecast<bool>(std::getenv("LUCI_LOG"), false);
+
+  // Turn on verbose logging if LUCI_LOG is set to some level
+  // VERBOSE(l, 1) will be visible with LUCI_LOG=2 and VERBOSE(l, 2) with LUCI_LOG=3 and so on
+  _show_verbose = safecast<int>(std::getenv("LUCI_LOG"), 0);
 }
 
 void LoggerConfig::configure(const hermes::Source *source, hermes::Source::Setting &setting) const
@@ -72,15 +87,24 @@ void LoggerConfig::configure(const hermes::Source *source, hermes::Source::Setti
 
 void LoggerConfig::configure(const Logger *, hermes::Source::Setting &setting) const
 {
-  if (_enabled)
+  setting.filter(hermes::SeverityCategory::FATAL).reject_all();
+  setting.filter(hermes::SeverityCategory::ERROR).reject_all();
+  setting.filter(hermes::SeverityCategory::WARN).reject_all();
+  setting.filter(hermes::SeverityCategory::INFO).reject_all();
+  setting.filter(hermes::SeverityCategory::VERBOSE).reject_all();
+
+  // TODO enable FATAL and ERROR
+  if (_show_warn)
+  {
+    setting.filter(hermes::SeverityCategory::WARN).accept_all();
+  }
+  if (_show_info)
   {
-    // Enable all catagories
-    setting.accept_all();
+    setting.filter(hermes::SeverityCategory::INFO).accept_all();
   }
-  else
+  if (_show_verbose)
   {
-    // Disable all catagories
-    setting.reject_all();
+    setting.filter(hermes::SeverityCategory::VERBOSE).accept_upto(_show_verbose);
   }
 }