Module: LogInitialization

Defined in:
lib/log.rb

Overview

The LogInitialization module

Class Method Summary collapse

Class Method Details

.initObject



47
48
49
50
# File 'lib/log.rb', line 47

def init
  init_log_file
  init_log4j if defined? Java
end

.init_log4j(log_level = org.apache.logging.log4j.Level::INFO) ⇒ Object

rubocop: disable Metrics/AbcSize rubocop: disable Metrics/MethodLength



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/log.rb', line 61

def init_log4j(log_level = org.apache.logging.log4j.Level::INFO)
  server_log_file = Logging.config[:server_log_file]
  logs_dir_path = Logging.config[:logs_dir_path]
  rolling_log_file_name_template = Logging.config[:rolling_log_file_name_template]
  rolling_log_file_path = File.join(logs_dir_path, rolling_log_file_name_template)

  java.lang::System.setProperty('log4j.shutdownHookEnabled', java.lang::Boolean.toString(false))
  factory = org.apache.logging.log4j.core.config.builder.api::ConfigurationBuilderFactory
  config = factory.newConfigurationBuilder()

  if log_level.is_a?(Symbol)
    log_level = org.apache.logging.log4j.Level.to_level(
      log_level.to_s.upcase
    )
  end
  config.setStatusLevel(log_level)
  config.setConfigurationName(Logging.config['name'])

  # Create a console appender
  target = org.apache.logging.log4j.core.appender::ConsoleAppender::Target::SYSTEM_OUT
  layout = config.newLayout('PatternLayout')
  layout = layout.addAttribute('pattern', Logging.config[:logger_pattern_template])
  appender = config.newAppender('stdout', 'CONSOLE')
  appender = appender.addAttribute('target', target)
  appender = appender.add(layout)
  config.add(appender)

  # Create a root logger
  root_logger = config.newRootLogger(log_level)
  root_logger = root_logger.add(config.newAppenderRef('stdout'))

  # Create a rolling file appender
  cron = config.newComponent('CronTriggeringPolicy')
  cron = cron.addAttribute('schedule', Logging.config[:schedule])

  size = config.newComponent('SizeBasedTriggeringPolicy')
  size = size.addAttribute('size', Logging.config[:size])

  policies = config.newComponent('Policies')
  policies = policies.addComponent(cron)
  policies = policies.addComponent(size)

  appender = config.newAppender('rolling_file', 'RollingFile')
  appender = appender.addAttribute('fileName', server_log_file)
  appender = appender.addAttribute('filePattern', rolling_log_file_path)
  appender = appender.add(layout)
  appender = appender.addComponent(policies)
  config.add(appender)

  root_logger = root_logger.addAttribute('additivity', false)
  root_logger = root_logger.add(config.newAppenderRef('rolling_file'))
  config.add(root_logger)

  logging_configuration = config.build()
  ctx = org.apache.logging.log4j.core.config::Configurator.initialize(logging_configuration)
  ctx.updateLoggers()
end

.init_log_fileObject



52
53
54
55
56
57
# File 'lib/log.rb', line 52

def init_log_file
  FileUtils.mkdir_p(Logging.config[:logs_dir_path])
  return if File.file?(Logging.config[:server_log_file])

  File.write(Logging.config[:server_log_file], '')
end