File: classes.rb

package info (click to toggle)
ruby-logging 2.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, sid, trixie
  • size: 660 kB
  • sloc: ruby: 6,139; sh: 11; makefile: 2
file content (41 lines) | stat: -rw-r--r-- 1,117 bytes parent folder | download | duplicates (2)
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: