Class: Bovem::Logger
- Inherits:
-
Logger
- Object
- Logger
- Bovem::Logger
- Defined in:
- lib/bovem/logger.rb
Overview
A custom logger.
Instance Attribute Summary collapse
-
#device ⇒ IO|String
readonly
The file or device to log messages to.
Class Method Summary collapse
-
.create(file = nil, level = Logger::INFO, formatter = nil) ⇒ Logger
Creates a new logger.
-
.default_file ⇒ String|IO
The default file for logging.
-
.default_formatter ⇒ Proc
The default formatter for logging.
-
.get_real_file(file) ⇒ String|IO
Translates a file to standard input or standard output in some special cases.
-
.start_time ⇒ Time
The log time of the first logger.
Instance Method Summary collapse
-
#initialize(logdev, shift_age = 0, shift_size = 1048576) ⇒ Logger
constructor
Creates a new logger.
Constructor Details
#initialize(logdev, shift_age = 0, shift_size = 1048576) ⇒ Logger
Creates a new logger.
22 23 24 25 |
# File 'lib/bovem/logger.rb', line 22 def initialize(logdev, shift_age = 0, shift_size = 1048576) @device = logdev super(logdev, shift_age, shift_size) end |
Instance Attribute Details
#device ⇒ IO|String (readonly)
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 # 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 = 1048576) @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) begin 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 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 {|severity, datetime, _, msg| color = case severity when "DEBUG" then :cyan when "INFO" then :green when "WARN" then :yellow when "ERROR" then :red when "FATAL" then :magenta else :white end header = Bovem::Console.replace_markers("{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)]) "%s %s\n" % [header, msg] } 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
.create(file = nil, level = Logger::INFO, formatter = nil) ⇒ Logger
Creates a new logger.
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/bovem/logger.rb', line 33 def self.create(file = nil, level = Logger::INFO, formatter = nil) begin 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 end |
.default_file ⇒ String|IO
The default file for logging.
58 59 60 |
# File 'lib/bovem/logger.rb', line 58 def self.default_file @default_file ||= $stdout end |
.default_formatter ⇒ Proc
The default formatter for logging.
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/bovem/logger.rb', line 64 def self.default_formatter @default_formatter ||= ::Proc.new {|severity, datetime, _, msg| color = case severity when "DEBUG" then :cyan when "INFO" then :green when "WARN" then :yellow when "ERROR" then :red when "FATAL" then :magenta else :white end header = Bovem::Console.replace_markers("{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)]) "%s %s\n" % [header, msg] } end |
.get_real_file(file) ⇒ String|IO
Translates a file to standard input or standard output in some special cases.
48 49 50 51 52 53 54 |
# File 'lib/bovem/logger.rb', line 48 def self.get_real_file(file) case file when "STDOUT" then $stdout when "STDERR" then $stderr else file end end |
.start_time ⇒ 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 |