Module: Logging

Included in:
Class, Module, Object
Defined in:
lib/log.rb,
lib/log.rb

Overview

The Logging module

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configObject

rubocop: disable Metrics/MethodLength



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/log.rb', line 22

def config
  @config ||= begin
    lib_dir_path = File.expand_path(__dir__)
    project_dir_path = File.expand_path(File.dirname(lib_dir_path))
    logs_dir_path = File.expand_path(File.join(project_dir_path, 'logs'))
    server_log_file = File.expand_path(File.join(logs_dir_path, 'server.log'))
    {
      level: :info,
      name: 'telnet',
      logs_dir_path: logs_dir_path,
      server_log_file: server_log_file,
      rolling_log_file_name_template: 'server-%d{yyyy-MM-dd}.log.gz',
      logger_pattern_template: '%d{ABSOLUTE} %-5p [%c{1}] %m%n',
      schedule: '0 0 0 * * ?',
      size: '100M'
    }
  end
end

.log_levelObject



219
220
221
# File 'lib/log.rb', line 219

def log_level
  Logging.config[:level]
end

.log_level=(log_level) ⇒ Object

rubocop: enable Metrics/CyclomaticComplexity



215
216
217
# File 'lib/log.rb', line 215

def log_level=(log_level)
  Logging.config[:level] = symbolize_numeric_log_level(log_level)
end

.symbolize_numeric_log_level(level) ⇒ Object

rubocop: disable Metrics/CyclomaticComplexity OFF: 0 FATAL: 100 ERROR: 200 WARN: 300 INFO: 400 DEBUG: 500 TRACE: 600 ALL: 2147483647 See: logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Level.html



201
202
203
204
205
206
207
208
209
210
211
212
# File 'lib/log.rb', line 201

def symbolize_numeric_log_level(level)
  case level
  when 5..Float::INFINITY then :off
  when 4 then :fatal
  when 3 then :error
  when 2 then :warn
  when 1 then :info
  when 0 then :debug
  when -1 then :trace
  when -2..-Float::INFINITY then :all
  end
end

Instance Method Details

#get_formatted_logger_name(logger_name = nil) ⇒ Object

rubocop: enable Metrics/AbcSize



178
179
180
181
182
# File 'lib/log.rb', line 178

def get_formatted_logger_name(logger_name = nil)
  return logger_name.to_s[/\w+$/] unless logger_name.nil?
  return name[/\w+$/] if is_a?(Class) || is_a?(Module)
  self.class.name[/\w+$/]
end

#init_java_logger(level, logger_name = nil, source_location = nil) ⇒ Object

rubocop: disable Metrics/AbcSize



169
170
171
172
173
174
175
# File 'lib/log.rb', line 169

def init_java_logger(level, logger_name = nil, source_location = nil)
  logger_name = get_formatted_logger_name(logger_name)
  logger_name = source_location.split(/\//).last if logger_name.empty?
  logger_instance = org.apache.logging.log4j.LogManager.getLogger(logger_name)
  logger_instance.level = org.apache.logging.log4j.Level.to_level(level.to_s.upcase)
  logger_instance
end

#init_logger(level = :all, logger_name = nil) ⇒ Object



157
158
159
160
# File 'lib/log.rb', line 157

def init_logger(level = :all, logger_name = nil)
  return init_java_logger(level, logger_name, caller[2]) if defined?(Java)
  init_ruby_logger(level)
end

#init_ruby_logger(level) ⇒ Object



162
163
164
165
166
# File 'lib/log.rb', line 162

def init_ruby_logger(level)
  logger_instance = Logger.new
  logger_instance.level = Logging::Level.to_level(level.to_s.upcase)
  logger_instance
end

#log(level = Logging.log_level, log_name = nil) ⇒ Object Also known as: logger



184
185
186
# File 'lib/log.rb', line 184

def log(level = Logging.log_level, log_name = nil)
  @log ||= init_logger(level, log_name)
end