Class: Bovem::Logger
- Inherits:
-
Logger
- Object
- Logger
- Bovem::Logger
- Defined in:
- lib/bovem/logger.rb
Overview
A custom logger.
Constant Summary
- LEVEL_NAMES =
List of valid logger levels.
{"DEBUG" => :cyan, "INFO" => :green, "WARN" => :yellow, "ERROR" => :red, "FATAL" => :magenta}.freeze
Instance Attribute Summary (collapse)
-
- (IO|String) device
readonly
The file or device to log messages to.
Class Method Summary (collapse)
-
+ (Logger) create(file = nil, level: Logger::INFO, formatter: nil)
Creates a new logger.
-
+ (String|IO) default_file
The default file for logging.
-
+ (Proc) default_formatter
The default formatter for logging.
-
+ (String|IO) get_real_file(file)
Translates a file to standard input or standard output in some special cases.
-
+ (Time) start_time
The log time of the first logger.
Instance Method Summary (collapse)
-
- (Logger) initialize(logdev, shift_age = 0, shift_size = 1_048_576)
constructor
Creates a new logger.
Constructor Details
- (Logger) initialize(logdev, shift_age = 0, shift_size = 1_048_576)
Creates a new logger.
25 26 27 28 |
# 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 |
Instance Attribute Details
- (IO|String) device (readonly)
Returns The file or device to log messages to.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/bovem/logger.rb', line 12 class Logger < ::Logger attr_reader :device # List of valid logger levels. LEVEL_NAMES = {"DEBUG" => :cyan, "INFO" => :green, "WARN" => :yellow, "ERROR" => :red, "FATAL" => :magenta}.freeze # Creates a new logger. # # @see http://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). def initialize(logdev, shift_age = 0, shift_size = 1_048_576) @device = logdev super(logdev, shift_age, shift_size) end # 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 http://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. 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 # 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. def self.get_real_file(file) case file when "STDOUT" then $stdout when "STDERR" then $stderr else file end end # The default file for logging. # @return [String|IO] The default file for logging. def self.default_file @default_file ||= $stdout end # The default formatter for logging. # @return [Proc] The default formatter for logging. 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 # 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. def self.start_time @start_time ||= ::Time.now end end |
Class Method Details
+ (Logger) create(file = nil, level: Logger::INFO, formatter: nil)
Creates a new logger.
36 37 38 39 40 41 42 43 |
# 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 |
+ (String|IO) default_file
The default file for logging.
59 60 61 |
# File 'lib/bovem/logger.rb', line 59 def self.default_file @default_file ||= $stdout end |
+ (Proc) default_formatter
The default formatter for logging.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# 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 |
+ (String|IO) get_real_file(file)
Translates a file to standard input or standard output in some special cases.
49 50 51 52 53 54 55 |
# 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 |
+ (Time) start_time
The log time of the first logger. This allows to show a T+0.1234
information into the log.
82 83 84 |
# File 'lib/bovem/logger.rb', line 82 def self.start_time @start_time ||= ::Time.now end |