Skip to content

Commit

Permalink
Fixes #15126: Add verbosity level in the rudder logger
Browse files Browse the repository at this point in the history
  • Loading branch information
Fdall committed Aug 21, 2019
1 parent b9c0f39 commit 29562a5
Showing 1 changed file with 53 additions and 10 deletions.
63 changes: 53 additions & 10 deletions tree/20_cfe_basics/log_rudder.cf
Expand Up @@ -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)
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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.
Expand Down

0 comments on commit 29562a5

Please sign in to comment.