From aaa5b5f47c4035ef8ba5d5dfb0c74671eb1f29f1 Mon Sep 17 00:00:00 2001 From: Millian Poquet <millian.poquet@inria.fr> Date: Fri, 31 Aug 2018 04:22:46 +0200 Subject: [PATCH] [code,doc] CLI: allow setting verbosity level --- CHANGELOG.md | 3 +++ src/main.cpp | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc88a98..836e650 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning][semver]. [//]: ========================================================================= ## [Unreleased] +### Added +- CLI: logging verbosity can now be set with `--verbosity`. + ### Changed - Dependencies: added [intervalset](https://framagit.org/batsim/intervalset). diff --git a/src/main.cpp b/src/main.cpp index 0277aa5..5b9455e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -85,10 +85,12 @@ int main(int argc, char ** argv) const set<string> policies_set = {"basic", "contiguous"}; const set<string> queue_orders_set = {"fcfs", "lcfs", "desc_bounded_slowdown", "desc_slowdown", "asc_size", "desc_size", "asc_walltime", "desc_walltime"}; + const set<string> verbosity_levels_set = {"debug", "info", "quiet", "silent"}; const string variants_string = "{" + boost::algorithm::join(variants_set, ", ") + "}"; const string policies_string = "{" + boost::algorithm::join(policies_set, ", ") + "}"; const string queue_orders_string = "{" + boost::algorithm::join(queue_orders_set, ", ") + "}"; + const string verbosity_levels_string = "{" + boost::algorithm::join(verbosity_levels_set, ", ") + "}"; ISchedulingAlgorithm * algo = nullptr; ResourceSelector * selector = nullptr; @@ -106,6 +108,7 @@ int main(int argc, char ** argv) args::ValueFlag<string> flag_variant_options(parser, "options", "Sets the scheduling variant options. Must be formatted as a JSON object.", {"variant_options"}, "{}"); args::ValueFlag<string> flag_variant_options_filepath(parser, "options-filepath", "Sets the scheduling variant options as the content of the given filepath. Overrides the variant_options options.", {"variant_options_filepath"}, ""); args::ValueFlag<string> flag_queue_order(parser, "order", "Sets the queue order. Available values are " + queue_orders_string, {'o', "queue_order"}, "fcfs"); + args::ValueFlag<string> flag_verbosity_level(parser, "verbosity-level", "Sets the verbosity level. Available values are " + verbosity_levels_string, {"verbosity"}, "info"); args::ValueFlag<bool> flag_call_make_decisions_on_single_nop(parser, "flag", "If set to true, make_decisions will be called after single NOP messages.", {"call_make_decisions_on_single_nop"}, true); args::Flag flag_version(parser, "version", "Shows batsched version", {"version"}); @@ -129,6 +132,12 @@ int main(int argc, char ** argv) % flag_scheduling_variant.Name() % flag_scheduling_variant.Get() % variants_string)); + + if (verbosity_levels_set.find(flag_verbosity_level.Get()) == verbosity_levels_set.end()) + throw args::ValidationError(str(format("Invalid '%1%' value (%2%): Not in %3%") + % flag_verbosity_level.Name() + % flag_verbosity_level.Get() + % verbosity_levels_string)); } catch(args::Help) { @@ -164,11 +173,22 @@ int main(int argc, char ** argv) string queue_order = flag_queue_order.Get(); string variant_options = flag_variant_options.Get(); string variant_options_filepath = flag_variant_options_filepath.Get(); + string verbosity_level = flag_verbosity_level.Get(); double rjms_delay = flag_rjms_delay.Get(); bool call_make_decisions_on_single_nop = flag_call_make_decisions_on_single_nop.Get(); try { + // Logging configuration + if (verbosity_level == "debug") + loguru::g_stderr_verbosity = loguru::Verbosity_1; + else if (verbosity_level == "quiet") + loguru::g_stderr_verbosity = loguru::Verbosity_WARNING; + else if (verbosity_level == "silent") + loguru::g_stderr_verbosity = loguru::Verbosity_OFF; + else + loguru::g_stderr_verbosity = loguru::Verbosity_INFO; + // Workload creation Workload w; w.set_rjms_delay(rjms_delay); -- GitLab