/usr/lib/ruby/vendor_ruby/innate/log/hub.rb is in ruby-innate 2013.02.21-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 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 | module Innate
# Innate only provides logging via stdlib Logger to avoid bloat and
# dependencies, you may specify multiple loggers in the Log instance of LogHub
# to accomendate your needs, by default we log to $stderr to be compatible with
# CGI.
#
# Please read the documentation of logger.rb (or even better, its source) to
# get a feeling of how to use it correctly within Innate
#
# A few shortcuts:
#
# 1. Create logger for stderr/stdout
# logger = Logger.new($stdout)
# logger = Logger.new($stderr)
#
# 2. Create logger for a file
#
# logger = Logger.new('test.log')
#
# 3. Create logger for file object
#
# file = File.open('test.log', 'a+')
# logger = Logger.new(file)
#
# 4. Create logger with rotation on specified file size
#
# # 10 files history, 5 MB each
# logger = Logger.new('test.log', 10, (5 << 20))
#
# # 100 files history, 1 MB each
# logger = Logger.new('test.log', 100, (1 << 20))
#
# 5. Create a logger which ages logfiles daily/weekly/monthly
#
# logger = Logger.new('test.log', 'daily')
# logger = Logger.new('test.log', 'weekly')
# logger = Logger.new('test.log', 'monthly')
class LogHub
include Logger::Severity
include Optioned
attr_accessor :loggers, :program, :active
# +loggers+ should be a list of Logger instances
def initialize(*loggers)
@loggers = loggers.flatten
@program = nil
@active = true
self.level = DEBUG
end
# set level for all loggers
def level=(lvl)
@loggers.each{|l| l.level = lvl }
@level = lvl
end
def start; @active = true; end
def stop; @active = false; end
def method_missing(meth, *args, &block)
eval %~
def #{meth}(*args, &block)
return unless @active
args.each{|arg| @loggers.each{|logger| logger.#{meth}(arg, &block) }}
end
~
send(meth, *args, &block)
end
def write(*args)
self.<<(*args)
end
end
end
|