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
|
# :stopdoc:
#
# The Logging framework is very good about figuring out predictable names
# for loggers regardless of what object is used to create them. The name is
# the class name or module name of whatever is passed to the logger bracket
# method. The following lines all return the exact same logger instance:
#
# ary = Array.new
# Logging.logger[ary]
# Logging.logger[Array]
# Logging.logger['Array']
# Logging.logger[:Array]
#
# So, if you want each class to have it's own logger this is very easy to
# do.
#
require 'logging'
Logging.logger.root.appenders = Logging.appenders.stdout
Logging.logger.root.level = :info
class Foo
attr_reader :log
def initialize() @log = Logging.logger[self]; end
end
class Foo::Bar
attr_reader :log
def initialize() @log = Logging.logger[self]; end
end
foo = Foo.new.log
bar = Foo::Bar.new.log
# you'll notice in these log messages that the logger names were taken
# from the class names of the Foo and Foo::Bar instances
foo.info 'this message came from Foo'
bar.warn 'this is a warning from Foo::Bar'
# :startdoc:
|