Module: Log4j2LoggerBridge::Log4j2RollingFile

Defined in:
lib/log4j2_logger_bridge/log4j2_rolling_file.rb

Overview

The Log4j2RollingFile module

Class Method Summary collapse

Class Method Details

.apply!(builder:, root_logger:, layout:) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/log4j2_logger_bridge/log4j2_rolling_file.rb', line 11

def apply!(builder:, root_logger:, layout:)
  destination = Log4j2LoggerBridge::Destination.config
  destination.ensure_paths!

  cron_policy = build_cron_policy(builder, destination)
  size_policy = build_size_policy(builder, destination)
  policies = build_policies(builder, cron_policy, size_policy)

  build_and_add_rolling_appender(builder, layout, destination, policies)
  attach_rolling_appender_to_root(builder, root_logger)
end

.attach_rolling_appender_to_root(builder, root_logger) ⇒ Object



56
57
58
59
# File 'lib/log4j2_logger_bridge/log4j2_rolling_file.rb', line 56

def attach_rolling_appender_to_root(builder, root_logger)
  root_logger = root_logger.addAttribute('additivity', false)
  root_logger.add(builder.newAppenderRef('rolling_file'))
end

.build_and_add_rolling_appender(builder, layout, destination, policies) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
# File 'lib/log4j2_logger_bridge/log4j2_rolling_file.rb', line 43

def build_and_add_rolling_appender(builder, layout, destination, policies)
  appender = builder.newAppender('rolling_file', 'RollingFile')
  appender = appender.addAttribute('fileName', destination.log_file_path)
  appender = appender.addAttribute(
    'filePattern',
    destination.resolved_rolling_file_name_template
  )
  appender = appender.add(layout)
  appender = appender.addComponent(policies)
  builder.add(appender)
end

.build_cron_policy(builder, destination) ⇒ Object



24
25
26
27
# File 'lib/log4j2_logger_bridge/log4j2_rolling_file.rb', line 24

def build_cron_policy(builder, destination)
  cron = builder.newComponent('CronTriggeringPolicy')
  cron.addAttribute('schedule', destination.rollover_schedule)
end

.build_policies(builder, cron_policy, size_policy) ⇒ Object



36
37
38
39
40
# File 'lib/log4j2_logger_bridge/log4j2_rolling_file.rb', line 36

def build_policies(builder, cron_policy, size_policy)
  policies = builder.newComponent('Policies')
  policies = policies.addComponent(cron_policy)
  policies.addComponent(size_policy)
end

.build_size_policy(builder, destination) ⇒ Object



30
31
32
33
# File 'lib/log4j2_logger_bridge/log4j2_rolling_file.rb', line 30

def build_size_policy(builder, destination)
  size = builder.newComponent('SizeBasedTriggeringPolicy')
  size.addAttribute('size', destination.rollover_size)
end