class Eco::API::Common::Session::Logger

Constants

DEFAULT_TIMESTAMP_PATTERN

Attributes

cache[R]

Public Class Methods

new(console_level: nil, file_level: ::Logger::DEBUG, log_file: nil, timestamp_console: false, enviro: nil) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 10
def initialize(console_level: nil, file_level: ::Logger::DEBUG, log_file: nil, timestamp_console: false, enviro: nil)
  raise "Required Environment object (enviro:). Given: #{enviro}" if enviro && !enviro.is_a?(Eco::API::Common::Session::Environment)
  @enviro = enviro
  @cache  = Logger::Cache.new

  timestamp_console = fetch_timestamp_console(timestamp_console)
  @console_logger = ::Logger.new(STDOUT).tap do |_logger|
    _logger.formatter = proc do |severity, datetime, progname, msg|
      str_timestamp = timestamp_console ? "#{datetime.strftime(DEFAULT_TIMESTAMP_PATTERN)} >" : ""
      "#{severity.to_s[0]}: #{str_timestamp} #{msg}\n"
    end
    _logger.level = fetch_console_level(console_level)
  end

  if log_file = fetch_log_file(log_file)
    @file_logger = ::Logger.new(log_file).tap do |_logger|
      _logger.formatter = proc do |severity, datetime, progname, msg|
        "#{severity.to_s[0]}: #{datetime.strftime(DEFAULT_TIMESTAMP_PATTERN)} > #{msg}\n".tap do |formatted|
          cache.add(severity, datetime, msg, formatted)
        end
      end
      _logger.level = fetch_file_level(file_level)
    end
  end
end

Public Instance Methods

<<(msg) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 64
def << (msg)
  @console_logger << msg unless !@console_logger
  @file_logger << msg    unless !@file_logger
end
add(*args) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 74
def add(*args)
  @console_logger.add(*args) unless !@console_logger
  @file_logger.add(*args)    unless !@file_logger
end
close() click to toggle source
# File lib/eco/api/common/session/logger.rb, line 69
def close()
  @console_logger.close unless !@console_logger
  @file_logger.close    unless !@file_logger
end
debug(*args, &block) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 40
def debug(*args, &block)
  log(:debug, *args, &block)
end
error(*args, &block) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 52
def error(*args, &block)
  return log(:error, *args, &block)
end
fatal(*args, &block) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 56
def fatal(*args, &block)
  return log(:fatal, *args, &block)
end
info(*args, &block) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 44
def info(*args, &block)
  log(:info, *args, &block)
end
level=(value) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 36
def level=(value)
  @console_logger.level = value
end
unkown(msg, &block) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 60
def unkown(msg, &block)
  return log(:unkown, *args, &block)
end
warn(*args, &block) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 48
def warn(*args, &block)
  return log(:warn, *args, &block)
end

Private Instance Methods

config() click to toggle source
# File lib/eco/api/common/session/logger.rb, line 86
def config
  @enviro.config || {}
end
fetch_console_level(value) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 94
def fetch_console_level(value)
  value || config.logger.console_level || ::Logger::INFO
end
fetch_file_level(value) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 98
def fetch_file_level(value)
  value || config.logger.file_level || ::Logger::DEBUG
end
fetch_log_file(log_file) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 102
def fetch_log_file(log_file)
  if log_file ||= config.logger.file
    log_file = @enviro.file_manager.dir.file(log_file) if @enviro
    FileManager.create_directory(log_file, includes_file: true)
  end
  log_file
end
fetch_timestamp_console(value) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 90
def fetch_timestamp_console(value)
  value || config.logger.timestamp_console
end
log(level, *args, &block) click to toggle source
# File lib/eco/api/common/session/logger.rb, line 81
def log(level, *args, &block)
  @console_logger.send(level, *args, &block) unless !@console_logger
  @file_logger.send(level, *args, &block) unless !@file_logger
end