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
Public Class Methods
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
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
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
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
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).
# 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
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