From 29562a578f0aab701400a9e4db4f1587143c8ddc Mon Sep 17 00:00:00 2001 From: Felix Dallidet Date: Wed, 21 Aug 2019 13:50:17 +0200 Subject: [PATCH] Fixes #15126: Add verbosity level in the rudder logger --- tree/20_cfe_basics/log_rudder.cf | 63 +++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 10 deletions(-) diff --git a/tree/20_cfe_basics/log_rudder.cf b/tree/20_cfe_basics/log_rudder.cf index 5f19274c6..ab79de2ea 100644 --- a/tree/20_cfe_basics/log_rudder.cf +++ b/tree/20_cfe_basics/log_rudder.cf @@ -16,9 +16,10 @@ # ##################################################################################### -# @name Log for Rudder -# @description Logging output for Rudder reports +# @name Log for Rudder with mode +# @description Logging different verbosity outputs for Rudder reports # +# @parameter mode The mode used to make the report # @parameter message The common part of the message to display # @parameter class_parameter The class_parameter for reporting (4.3+ version) # @parameter old_class_prefix The prefix of the class for different states (<4.3 version) @@ -28,8 +29,9 @@ # @class_prefix logger_rudder # @class_parameter old_class_prefix -bundle agent log_rudder(message, class_parameter, old_class_prefix, class_prefix, args) +bundle agent log_rudder_mode(mode, message, class_parameter, old_class_prefix, class_prefix, args) { + vars: "c_old_class_prefix" string => canonify("${old_class_prefix}"); # When ${class_prefix} itself contains ${class_prefix}, it uses the previous value when calling @@ -41,12 +43,34 @@ bundle agent log_rudder(message, class_parameter, old_class_prefix, class_prefix "class_prefix_length" int => string_length("${class_prefix}"); "component_key" string => "${class_parameter}"; + "effective_prefix" string => "${c_old_class_prefix}"; + pass1.use_class_prefix:: + "effective_prefix" string => "${c_class_prefix}"; defaults: # if class_parameter is not set, then use the component_key from report_data "component_key" string => "${report_data.component_key}", if_match_regex => ""; classes: + "pass3" expression => "pass2"; + "pass2" expression => "pass1"; + "pass1" expression => "any"; + + # Verify that the mode is known + "classic_report" or => { + strcmp("result_na", "${mode}"), + strcmp("result_success", "${mode}"), + strcmp("result_error", "${mode}"), + strcmp("result_repaired", "${mode}"), + }; + "log_report" or => { + strcmp("log_repaired", "${mode}"), + strcmp("log_warn", "${mode}"), + strcmp("log_info", "${mode}"), + strcmp("log_debug", "${mode}"), + strcmp("log_trace", "${mode}") + }; + # Use the full class prefix if: # - it is defined # - its length is smaller than 1000 character (classes are limited to 1023 characters, so if the prefix @@ -61,20 +85,39 @@ bundle agent log_rudder(message, class_parameter, old_class_prefix, class_prefix "use_class_prefix" expression => "class_prefix_defined.class_prefix_size_ok"; methods: - !use_class_prefix:: - "report" usebundle => _rudder_common_reports_generic("${report_data.technique_name}", "${c_old_class_prefix}", "${report_data.identifier}", "${report_data.component_name}", "${component_key}", "${message}"), - classes => classes_generic("logger_rudder_${c_old_class_prefix}"); + pass3.!log_report:: + "report" usebundle => _rudder_common_reports_generic("${report_data.technique_name}", "${effective_prefix}", "${report_data.identifier}", "${report_data.component_name}", "${component_key}", "${message}"), + classes => classes_generic("logger_rudder_${effective_prefix}"); - use_class_prefix:: - "report" usebundle => _rudder_common_reports_generic("${report_data.technique_name}", "${c_class_prefix}", "${report_data.identifier}", "${report_data.component_name}", "${component_key}", "${message}"), - classes => classes_generic("logger_rudder_${c_class_prefix}"); + pass3.log_report:: + "report" usebundle => _rudder_common_report("${report_data.technique_name}", "${effective_prefix}", "${mode}", "${report_data.identifier}", "${report_data.component_name}", "${component_key}", "${message}"), + classes => classes_generic("logger_rudder_${effective_prefix}"); reports: - info.!class_prefix_size_ok:: + pass3.info.!class_prefix_size_ok:: # Since the class_prefix is too long, i'm not outputing it (it would fill several lines of text with no added value) "${configuration.info}: Class prefix is too long - fallbacking to old_class_prefix ${old_class_prefix} for reporting"; } +# @name Log for Rudder +# @description Logging output for Rudder reports +# +# @parameter message The common part of the message to display +# @parameter class_parameter The class_parameter for reporting (4.3+ version) +# @parameter old_class_prefix The prefix of the class for different states (<4.3 version) +# @parameter class_prefix The prefix of the class for different states (4.3+ version) +# @parameter args The arguments used to call the generic method (slist) +# +# @class_prefix logger_rudder +# @class_parameter old_class_prefix + +bundle agent log_rudder(message, class_parameter, old_class_prefix, class_prefix, args) +{ + methods: + "report" usebundle => log_rudder_mode("", "${message}", "${class_parameter}", "${old_class_prefix}", "${class_prefix}", "${args}"); +} + + # @name Logger for Rudder - legacy interface (DEPRECATED) # @deprecated Use [log_rudder](#log_rudder) instead. # @description Logging output for Rudder reports. This interface is for compatiblity with older generic methods and techniques, and is replaced by log_rudder.