From ea16eb5e9f2187a0bc2e56581a2bcd506cff3b37 Mon Sep 17 00:00:00 2001 From: Christian Herdtweck Date: Wed, 12 Nov 2014 11:08:26 +0100 Subject: [PATCH] warn in case of unrecognized command line options; added more info output concerning log output and level --- src/config/configurationcommandline.cpp | 13 +++++++++++++ src/main.cpp | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 0 deletions(-) diff --git a/src/config/configurationcommandline.cpp b/src/config/configurationcommandline.cpp index 5f1330c..afce481 100644 --- a/src/config/configurationcommandline.cpp +++ b/src/config/configurationcommandline.cpp @@ -33,6 +33,8 @@ using boost::program_options::options_description; using boost::program_options::parsed_options; using boost::program_options::positional_options_description; using boost::program_options::variables_map; +using boost::program_options::collect_unrecognized; +using boost::program_options::include_positional; using I2n::Logger::GlobalLogger; //----------------------------------------------------------------------------- @@ -117,6 +119,17 @@ bool ConfigurationCommandLine::process( variables_map *vm ) positional( p ). allow_unregistered(). run(); + + // TODO not sure whether the "allow_unregistered()" above is required or not + // Because of this option, it is easy to make mistakes in options, so at least + // warn + vector unrecognized_options = collect_unrecognized(parsed_opt.options, + include_positional); + if ( !unrecognized_options.empty() ) + { + GlobalLogger.warning() << "Accepted unrecognized options" << endl; + } + store( parsed_opt, *vm ); notify( *vm ); } diff --git a/src/main.cpp b/src/main.cpp index 979beef..a467405 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -82,6 +82,11 @@ ConfigurationItem get_configuration( Configuration config_obj = config_reader.get_configuration(); configuration.reset( new Configuration( config_obj ) ); } + else + { + GlobalLogger.error() << "Failed to parse options from command line and/or config file! " + << "Continue with standard values." << endl; + } return configuration; } @@ -108,6 +113,7 @@ LinkStatusItem get_status_notifier( void init_logger() { + // set default: log at level NOTICE to syslog const int default_log_level = I2n::Logger::LogLevel::Notice; I2n::Logger::enable_syslog( I2n::Logger::Facility::User ); //lint !e1786 @@ -122,14 +128,22 @@ void set_log_output( switch (log_output) { case LogOutput_SYSLOG: + GlobalLogger.info() << "Setting log output target to syslog" << endl; I2n::Logger::enable_syslog(true); I2n::Logger::enable_stderr_log(false); I2n::Logger::enable_log_file(false); + GlobalLogger.info() << "Set log output target to syslog" << endl; break; case LogOutput_TERMINAL: + GlobalLogger.info() << "Setting log output target to terminal" << endl; I2n::Logger::enable_syslog(false); I2n::Logger::enable_stderr_log(true); I2n::Logger::enable_log_file(false); + GlobalLogger.info() << "Set log output target to terminal" << endl; + GlobalLogger.info() << "(check syslog for earlier messages)" << endl; + break; + default: + GlobalLogger.error() << "Unknown log output target!" << endl; break; } } -- 1.7.1