Method: Logger#initialize

Defined in:
lib/logger.rb

#initialize(logdev, shift_age = 0, shift_size = 1048576, level: DEBUG, progname: nil, formatter: nil, datetime_format: nil, binmode: false, shift_period_suffix: '%Y%m%d', reraise_write_errors: []) ⇒ Logger

:call-seq:

Logger.new(logdev, shift_age = 0, shift_size = 1048576, **options)

With the single argument logdev, returns a new logger with all default options:

Logger.new('t.log') # => #<Logger:0x000001e685dc6ac8>

Argument logdev must be one of:

  • A string filepath: entries are to be written to the file at that path; if the file at that path exists, new entries are appended.

  • An IO stream (typically $stdout, $stderr. or an open file): entries are to be written to the given stream.

  • nil or File::NULL: no entries are to be written.

Examples:

Logger.new('t.log')
Logger.new($stdout)

The keyword options are:

  • level: sets the log level; default value is Logger::DEBUG. See Log Level:

    Logger.new('t.log', level: Logger::ERROR)
    
  • progname: sets the default program name; default is nil. See Program Name:

    Logger.new('t.log', progname: 'mung')
    
  • formatter: sets the entry formatter; default is nil. See formatter=.

  • datetime_format: sets the format for entry timestamp; default is nil. See #datetime_format=.

  • binmode: sets whether the logger writes in binary mode; default is false.

  • shift_period_suffix: sets the format for the filename suffix for periodic log file rotation; default is '%Y%m%d'. See Periodic Rotation.

  • reraise_write_errors: An array of exception classes, which will be reraised if there is an error when writing to the log device. The default is to swallow all exceptions raised.



581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
# File 'lib/logger.rb', line 581

def initialize(logdev, shift_age = 0, shift_size = 1048576, level: DEBUG,
               progname: nil, formatter: nil, datetime_format: nil,
               binmode: false, shift_period_suffix: '%Y%m%d',
               reraise_write_errors: [])
  self.level = level
  self.progname = progname
  @default_formatter = Formatter.new
  self.datetime_format = datetime_format
  self.formatter = formatter
  @logdev = nil
  @level_override = {}
  if logdev && logdev != File::NULL
    @logdev = LogDevice.new(logdev, shift_age: shift_age,
      shift_size: shift_size,
      shift_period_suffix: shift_period_suffix,
      binmode: binmode,
      reraise_write_errors: reraise_write_errors)
  end
end