/usr/lib/ruby/vendor_ruby/log4r/outputter/outputterfactory.rb is in ruby-log4r 1.1.10-3.
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 | # :nodoc:
# Version: $Id$
require "log4r/base"
require "log4r/repository"
require "log4r/logger"
require 'monitor'
module Log4r
class Outputter < Monitor
class OutputterFactory #:nodoc:
include Singleton
# handles two cases: logging above a level (no second arg specified)
# or logging a set of levels (passed into the second argument)
def self.create_methods(out, levels=nil)
Logger.root # force levels to be loaded
# first, undefine all the log levels
for mname in LNAMES
undefine_log(mname.downcase, out)
end
if not levels.nil? and levels.include? OFF
raise TypeError, "Can't log only_at OFF", caller[1..-1]
end
return out if out.level == OFF
if levels.nil? # then define the log methods for lev >= outlev
for lev in out.level...LEVELS
define_log(LNAMES[lev].downcase, lev, out)
end
else # define the logs only for assigned levels
for lev in levels
define_log(LNAMES[lev].downcase, lev, out)
end
end
return out
end
# we need to synch the actual write/format for thread safteyness
def self.define_log(mname, level, out)
return if mname == 'off' || mname == 'all'
mstr = %-
def out.#{mname}(logevent)
canonical_log(logevent)
end
-
module_eval mstr
end
def self.undefine_log(mname, out)
return if mname == 'off' || mname == 'all'
mstr = "def out.#{mname}(logevent); end"
module_eval mstr
end
end
end
end
|