Puppet Function: yaml_to_log4j

Defined in:
lib/puppet/parser/functions/yaml_to_log4j.rb
Function type:
Ruby 3.x API

Overview

yaml_to_log4j()Any

Returns:

  • (Any)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/puppet/parser/functions/yaml_to_log4j.rb', line 12

newfunction(:yaml_to_log4j, :type => :rvalue) do |args|

  raise Puppet::ParseError, 'Wrong parameter type. yaml_to_log4j takes a Hash as single parameter.' unless args[0].is_a? Hash

  configfiles            = args[0]
  loggers                = {}
  appenders              = {}
  console_appenders      = {}
  rolling_file_appenders = {}
  file_appenders         = {}

  # Extract loggers and appenders
  configfiles.each do |key, value|
    loggers.merge!(value.delete('loggers').each { |logger,attributes| attributes['path'] = key.to_s})
    appenders.merge!(value.delete('appenders').each { |appender,attributes| attributes['path'] = key.to_s})
  end

  # Classify appenders by type
  appenders.each do |key,value|
    console_appenders[key]      = appenders[key] if value['type'] =~ /^console$/i
    rolling_file_appenders[key] = appenders[key] if value['type'] =~ /^rollingfile$/i
    file_appenders[key]         = appenders[key] if value['type'] =~ /^file$/i
    appenders[key].delete('type')
  end

  [configfiles, loggers, console_appenders, file_appenders, rolling_file_appenders]
end