class Bovem::Logger

A custom logger.

@attribute [r] device

@return [IO|String] The file or device to log messages to.

Constants

LEVEL_NAMES

List of valid logger levels.

Attributes

device[R]

Public Class Methods

create(file = nil, level: Logger::INFO, formatter: nil) click to toggle source

Creates a new logger.

@param file [String|IO] The log device. This is a filename (String) or IO object (typically STDOUT, STDERR, or an open file). @param level [Fixnum] The minimum severity to log. See www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html for valid levels. @param formatter [Proc] The formatter to use for logging. @return [Logger] The new logger.

# File lib/bovem/logger.rb, line 36
def self.create(file = nil, level: Logger::INFO, formatter: nil)
  rv = new(get_real_file(file || default_file))
  rv.level = level.to_integer
  rv.formatter = formatter || default_formatter
  rv
rescue
  raise Bovem::Errors::InvalidLogger
end
default_file() click to toggle source

The default file for logging. @return [String|IO] The default file for logging.

# File lib/bovem/logger.rb, line 59
def self.default_file
  @default_file ||= $stdout
end
default_formatter() click to toggle source

The default formatter for logging. @return [Proc] The default formatter for logging.

# File lib/bovem/logger.rb, line 65
def self.default_formatter
  @default_formatter ||= ::Proc.new do |severity, datetime, _, msg|
    color = LEVEL_NAMES.fetch(severity, :white)

    header = Bovem::Console.replace_markers(
      sprintf(
        "{mark=bright-#{color}}[%s T+%0.5f] %s:{/mark}", datetime.strftime("%Y/%b/%d %H:%M:%S"),
        [datetime.to_f - start_time.to_f, 0].max, severity.rjust(5)
      )
    )

    sprintf("%s %s\n", header, msg)
  end
end
get_real_file(file) click to toggle source

Translates a file to standard input or standard output in some special cases.

@param file [String] The string to translate. @return [String|IO] The translated file name.

# File lib/bovem/logger.rb, line 49
def self.get_real_file(file)
  case file
  when "STDOUT" then $stdout
  when "STDERR" then $stderr
  else file
  end
end
new(logdev, shift_age = 0, shift_size = 1_048_576) click to toggle source

Creates a new logger.

@see www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html

@param logdev [String|IO] The log device. This is a filename (String) or IO object (typically STDOUT, STDERR, or an open file). @param shift_age [Fixnum] Number of old log files to keep, or frequency of rotation (daily, weekly or monthly). @param shift_size [Fixnum] Maximum logfile size (only applies when shift_age is a number).

Calls superclass method
# File lib/bovem/logger.rb, line 25
def initialize(logdev, shift_age = 0, shift_size = 1_048_576)
  @device = logdev
  super(logdev, shift_age, shift_size)
end
start_time() click to toggle source

The log time of the first logger. This allows to show a `T+0.1234` information into the log. @return [Time] The log time of the first logger.

# File lib/bovem/logger.rb, line 82
def self.start_time
  @start_time ||= ::Time.now
end