Module: Dry::System::Plugins::Logging

Defined in:
lib/dry/system/plugins/logging.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(system) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/dry/system/plugins/logging.rb', line 10

def self.extended(system)
  system.instance_eval do
    setting :logger, reader: true

    setting :log_dir, default: "log"

    setting :log_levels, default: {
      development: Logger::DEBUG,
      test: Logger::DEBUG,
      production: Logger::ERROR
    }

    setting :logger_class, default: ::Logger, reader: true
  end

  system.after(:configure, &:register_logger)

  super
end

Instance Method Details

#log_dir_pathObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



57
58
59
# File 'lib/dry/system/plugins/logging.rb', line 57

def log_dir_path
  root.join(config.log_dir).realpath
end

#log_file_nameObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



67
68
69
# File 'lib/dry/system/plugins/logging.rb', line 67

def log_file_name
  "#{config.env}.log"
end

#log_file_pathObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



62
63
64
# File 'lib/dry/system/plugins/logging.rb', line 62

def log_file_path
  log_dir_path.join(log_file_name)
end

#log_levelObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



52
53
54
# File 'lib/dry/system/plugins/logging.rb', line 52

def log_level
  config.log_levels.fetch(config.env, Logger::ERROR)
end

#register_loggerself

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Set a logger

This is invoked automatically when a container is being configured

Returns:

API:

  • private



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/dry/system/plugins/logging.rb', line 37

def register_logger
  if registered?(:logger)
    self
  elsif config.logger
    register(:logger, config.logger)
  else
    config.logger = config.logger_class.new(log_file_path)
    config.logger.level = log_level

    register(:logger, config.logger)
    self
  end
end