Module: Descope::Mixins::Logging

Included in:
Descope::Mixins
Defined in:
lib/descope/mixins/logging.rb

Overview

Module to provide logger.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configure_logger_for(classname, level = 'info', project_id = nil) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/descope/mixins/logging.rb', line 22

def configure_logger_for(classname, level = 'info', project_id = nil)
  logger = Logger.new(STDOUT)
  logger.level = Object.const_get("Logger::#{level.upcase}")
  logger.progname = classname

  # Adding Custom Formatter for Project ID
  logger.formatter = proc do |severity, datetime, progname, msg|
    project_info = project_id ? "PRID: #{project_id}" : ""
    "[#{datetime}] #{severity} #{project_info} #{progname}: #{msg}\n"
  end

  logger
end

.logger_for(classname, level, project_id = nil) ⇒ Object



17
18
19
20
# File 'lib/descope/mixins/logging.rb', line 17

def logger_for(classname, level, project_id = nil)
  key = "#{classname}-#{project_id}"
  @loggers[key] ||= configure_logger_for(classname, level, project_id)
end

Instance Method Details

#loggerObject



8
9
10
11
# File 'lib/descope/mixins/logging.rb', line 8

def logger
  # This is the magical bit that gets mixed into the other modules
  @logger ||= Logging.logger_for(self.class.name, 'info', @project_id)
end