-
Notifications
You must be signed in to change notification settings - Fork 98
/
Copy pathclasses.rb
41 lines (34 loc) · 1.09 KB
/
classes.rb
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: