Class: Kybus::Logger::Config

Inherits:
Object
  • Object
show all
Includes:
DRY::ResourceInjector, Format
Defined in:
lib/kybus/logger/config.rb

Constant Summary collapse

SEVERITIES =
{
  'debug' => ::Logger::DEBUG,
  'info' => ::Logger::INFO,
  'warn' => ::Logger::WARN,
  'error' => ::Logger::ERROR,
  'fatal' => ::Logger::FATAL
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Format

#format_builder

Constructor Details

#initialize(config) ⇒ Config



34
35
36
37
38
39
40
41
42
# File 'lib/kybus/logger/config.rb', line 34

def initialize(config)
  @original_config = config
  init_log_file
  register('date_format', config['date_format'] || '%Y-%m-%d %H:%M:%S')
  register('severity', config['severity'] || 'info')
  register('log_format', config['log_format'] || "%time,%sev,%pid,%tid,%mod,%json\n")
  register('blacklist', config['blacklist'] || %w[pass password])
  register('logger', logger)
end

Class Method Details

.from_config(config) ⇒ Object



19
20
21
# File 'lib/kybus/logger/config.rb', line 19

def self.from_config(config)
  new(config)
end

Instance Method Details

#init_log_fileObject



23
24
25
26
27
28
29
30
31
32
# File 'lib/kybus/logger/config.rb', line 23

def init_log_file
  log_output = if @original_config['stdout'].nil? || @original_config['stdout']
                 $stdout
               else
                 @original_config['file'] || 'application.log'
               end
  register('file', log_output)
  register('rotate_days', @original_config['rotate_days'] || 7)
  register('rotate_size', @original_config['rotate_size'] || (100 * (1024**2))) # 100Mb
end

#loggerObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/kybus/logger/config.rb', line 44

def logger
  @logger ||= begin
    log_output = resource('file')
    logger = if log_output == $stdout
               ::Logger.new(log_output)
             else
               ::Logger.new(
                 log_output,
                 resource('rotate_days'),
                 resource('rotate_size')
               )
             end
    $stdout.sync = true if @original_config['stdout']
    logger.sev_threshold = SEVERITIES[resource('severity')]
    logger.datetime_format = resource('date_format')
    logger.formatter = format_builder(resource('log_format'))
    logger
  end
end

#merge_params(msg, data, debug) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/kybus/logger/config.rb', line 64

def merge_params(msg, data, debug)
  blacklist = resource('blacklist') + ['debug']
  params = {}
  data.each { |k, v| params[k] = v unless blacklist.include?(k.to_s) }
  params[:debug] = debug if resource('severity') == 'debug'
  [msg, params]
end