Class: Hive::Log

Inherits:
Object
  • Object
show all
Defined in:
lib/hive/log.rb

Overview

Hive logging Allow logging to be written to multiple locations.

Instance Method Summary collapse

Constructor Details

#initialize(args = []) ⇒ Log

Create the logger:

# No log files will be written
log = Hive::Log.new()
# Write log files to standard out and a log file
log = Hive::Log.new( [
                        {
                          stream: 'Filename.log',
                          level: 'DEBUG'
                        },
                        {
                          stream: STDOUT,
                          level: 'INFO'
                        },
                      ] )


22
23
24
25
26
27
# File 'lib/hive/log.rb', line 22

def initialize(args = [])
  @loggers = {}
  args.each do |l|
    add_logger(l[:stream], l[:level])
  end
end

Instance Method Details

#add_logger(stream, level) ⇒ Object

Add a new log location:

# INFO level log to 'Filename.log'
log.add_logger( 'Filename.log', 'INFO' )
# DEBUG level log to standard output
log.add_logger( STDOUT, 'DEBUG' )


35
36
37
38
39
40
41
42
# File 'lib/hive/log.rb', line 35

def add_logger(stream, level)
  log = MonoLogger.new(stream)
  log.formatter = proc do |severity, datetime, _progname, msg|
    "#{severity[0, 1]} #{datetime.strftime('%Y-%m-%d %H:%M:%S')}: #{msg}\n"
  end
  log.level = MonoLogger.const_get(level)
  @loggers[stream] = log
end

#stop_logger(stream) ⇒ Object

Stop a log stream:

# Stop the log to standard output
log.stop_logger( STDOUT )
# Stop the log to 'Filename.log'
log.stop_logger( 'Filename.log' )


50
51
52
# File 'lib/hive/log.rb', line 50

def stop_logger(stream)
  @loggers.delete(stream)
end