logging 1.8.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +6 -0
- data/README.rdoc +2 -0
- data/examples/custom_log_levels.rb +53 -0
- data/examples/lazy.rb +45 -0
- data/examples/rspec_integration.rb +38 -0
- data/lib/logging/diagnostic_context.rb +4 -4
- data/lib/logging/log_event.rb +1 -1
- data/test/layouts/test_yaml.rb +1 -1
- data/version.txt +1 -1
- metadata +5 -2
    
        data/History.txt
    CHANGED
    
    
    
        data/README.rdoc
    CHANGED
    
    | @@ -79,10 +79,12 @@ There are many more examples in the "examples" folder of the logging | |
| 79 79 | 
             
            package. The recommended reading order is the following:
         | 
| 80 80 |  | 
| 81 81 | 
             
            * {simple.rb}[https://github.com/TwP/logging/blob/master/examples/simple.rb]
         | 
| 82 | 
            +
            * {rspec_integration.rb}[https://github.com/TwP/logging/blob/master/examples/rspec_integration.rb]
         | 
| 82 83 | 
             
            * {loggers.rb}[https://github.com/TwP/logging/blob/master/examples/loggers.rb]
         | 
| 83 84 | 
             
            * {classes.rb}[https://github.com/TwP/logging/blob/master/examples/classes.rb]
         | 
| 84 85 | 
             
            * {hierarchies.rb}[https://github.com/TwP/logging/blob/master/examples/hierarchies.rb]
         | 
| 85 86 | 
             
            * {names.rb}[https://github.com/TwP/logging/blob/master/examples/names.rb]
         | 
| 87 | 
            +
            * {lazy.rb}[https://github.com/TwP/logging/blob/master/examples/lazy.rb]
         | 
| 86 88 | 
             
            * {appenders.rb}[https://github.com/TwP/logging/blob/master/examples/appenders.rb]
         | 
| 87 89 | 
             
            * {layouts.rb}[https://github.com/TwP/logging/blob/master/examples/layouts.rb]
         | 
| 88 90 | 
             
            * {formatting.rb}[https://github.com/TwP/logging/blob/master/examples/formatting.rb]
         | 
| @@ -0,0 +1,53 @@ | |
| 1 | 
            +
            # :stopdoc:
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # It's useful to define custom log levels that denote success, or otherwise
         | 
| 4 | 
            +
            # meaningful events that happen to not be negative (more than 50% of the
         | 
| 5 | 
            +
            # levels are given to warn, error, fail - quite a pessimistic view of one's
         | 
| 6 | 
            +
            # application's chances of success, no?  ;-) )
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # Here, we define two new levels, 'happy' and 'success' and make them soothing
         | 
| 9 | 
            +
            # colours.
         | 
| 10 | 
            +
            #
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              require 'logging'
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              # https://github.com/TwP/logging/blob/master/lib/logging.rb#L250-285
         | 
| 15 | 
            +
              # The levels run from lowest level to highest level.
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              Logging.init :debug, :info, :happy, :warn, :success, :error, :fatal
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              Logging.color_scheme( 'soothing_ish',
         | 
| 20 | 
            +
                :levels => {
         | 
| 21 | 
            +
                  :info  => :cyan,
         | 
| 22 | 
            +
                  :happy => :green,
         | 
| 23 | 
            +
                  :warn  => :yellow,
         | 
| 24 | 
            +
                  :success => [:blue],
         | 
| 25 | 
            +
                  :error => :red,
         | 
| 26 | 
            +
                  :fatal => [:white, :on_red]
         | 
| 27 | 
            +
                },
         | 
| 28 | 
            +
                :date => :cyan,
         | 
| 29 | 
            +
                :logger => :cyan,
         | 
| 30 | 
            +
                :message => :orange
         | 
| 31 | 
            +
              )
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              Logging.appenders.stdout(
         | 
| 34 | 
            +
                'stdout',
         | 
| 35 | 
            +
                :layout => Logging.layouts.pattern(
         | 
| 36 | 
            +
                  :pattern => '[%d] %-7l %c: %m\n',
         | 
| 37 | 
            +
                  :color_scheme => 'soothing_ish'
         | 
| 38 | 
            +
                )
         | 
| 39 | 
            +
              )
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              log = Logging.logger['Soothing::Colors']
         | 
| 42 | 
            +
              log.add_appenders 'stdout'
         | 
| 43 | 
            +
              log.level = :debug
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              log.debug   'a very nice little debug message'
         | 
| 46 | 
            +
              log.info    'things are operating nominally'
         | 
| 47 | 
            +
              log.happy   'What a beautiful day'
         | 
| 48 | 
            +
              log.warn    'this is your last warning'
         | 
| 49 | 
            +
              log.success 'I am INWEENCIBLE!!'
         | 
| 50 | 
            +
              log.error   StandardError.new('something went horribly wrong')
         | 
| 51 | 
            +
              log.fatal   'I Die!'
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            # :startdoc:
         | 
    
        data/examples/lazy.rb
    ADDED
    
    | @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            # :stopdoc:
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # It happens sometimes that it is very expensive to construct a logging
         | 
| 4 | 
            +
            # message; for example, if a large object structure has to be traversed
         | 
| 5 | 
            +
            # during executing of an `object.to_s` method. It would be convenient to
         | 
| 6 | 
            +
            # delay creation of the message until the log event actually takes place.
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # For example, with a logger configured only to show WARN messages and higher,
         | 
| 9 | 
            +
            # creating the log message for an INFO message would be wasteful. The INFO log
         | 
| 10 | 
            +
            # event would never be generated in this case.
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            # Log message creation can be performed lazily by wrapping the expensive
         | 
| 13 | 
            +
            # message generation code in a block and passing that to the logging method.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              require 'logging'
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              Logging.logger.root.appenders = Logging.appenders.stdout
         | 
| 18 | 
            +
              Logging.logger.root.level = :info
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              # We use this dummy method in order to see if the method gets called, but in practice,
         | 
| 21 | 
            +
              # this method might do complicated string operations to construct a log message.
         | 
| 22 | 
            +
              def expensive_method
         | 
| 23 | 
            +
                puts "Called!"
         | 
| 24 | 
            +
                "Expensive message"
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              log = Logging.logger['Lazy']
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              # If you log this message the usual way, expensive_method gets called before
         | 
| 30 | 
            +
              # debug, hence the Logging framework has no chance to stop it from being executed
         | 
| 31 | 
            +
              # immediately.
         | 
| 32 | 
            +
              log.info("Normal")
         | 
| 33 | 
            +
              log.debug(expensive_method)
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              # If we put the message into a block, then the block is not executed, if
         | 
| 36 | 
            +
              # the message is not needed with the current log level.
         | 
| 37 | 
            +
              log.info("Block unused")
         | 
| 38 | 
            +
              log.debug { expensive_method }
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              # If the log message is needed with the current log level, then the block is of
         | 
| 41 | 
            +
              # course executed and the log message appears as expected.
         | 
| 42 | 
            +
              log.info("Block used")
         | 
| 43 | 
            +
              log.warn { expensive_method }
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            # :startdoc:
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            # :stopdoc:
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # One useful feature of log messages in your code is that they provide a
         | 
| 4 | 
            +
            # convenient instrumentation point for testing. Through log messages you can
         | 
| 5 | 
            +
            # confirm that internal methods were called or that certain code paths were
         | 
| 6 | 
            +
            # executed. This example demonstrates how to capture log output during testing
         | 
| 7 | 
            +
            # for later analysis.
         | 
| 8 | 
            +
            #
         | 
| 9 | 
            +
            # The Logging framework provides an RSpec helper that will direct log output
         | 
| 10 | 
            +
            # to a StringIO appender. Log lines can be read from this IO destination
         | 
| 11 | 
            +
            # during tests.
         | 
| 12 | 
            +
            #
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              require 'rspec'
         | 
| 15 | 
            +
              require 'logging'
         | 
| 16 | 
            +
              require 'rspec/logging_helper'
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              # Configure RSpec to capture log messages for each test. The output from the
         | 
| 19 | 
            +
              # logs will be stored in the @log_output variable. It is a StringIO instance.
         | 
| 20 | 
            +
              RSpec.configure do |config|
         | 
| 21 | 
            +
                include RSpec::LoggingHelper
         | 
| 22 | 
            +
                config.capture_log_messages
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              # Now within your specs you can check that various log events were generated.
         | 
| 26 | 
            +
              describe 'SuperLogger' do
         | 
| 27 | 
            +
                it 'should be able to read a log message' do
         | 
| 28 | 
            +
                  logger = Logging.logger['SuperLogger']
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  logger.debug 'foo bar'
         | 
| 31 | 
            +
                  logger.warn  'just a little warning'
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  @log_output.readline.should be == 'DEBUG SuperLogger: foo bar'
         | 
| 34 | 
            +
                  @log_output.readline.should be == 'WARN  SuperLogger: just a little warning'
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            # :startdoc:
         | 
| @@ -307,17 +307,17 @@ class Thread | |
| 307 307 | 
             
                # then they cannot be garbage collected until the child thread exits.
         | 
| 308 308 | 
             
                #
         | 
| 309 309 | 
             
                def create_with_logging_context( m, *a, &b )
         | 
| 310 | 
            -
                   | 
| 310 | 
            +
                  mdc, ndc = nil
         | 
| 311 311 |  | 
| 312 312 | 
             
                  if Thread.current[Logging::MappedDiagnosticContext::NAME]
         | 
| 313 | 
            -
                     | 
| 313 | 
            +
                    mdc = Thread.current[Logging::MappedDiagnosticContext::NAME].dup
         | 
| 314 314 | 
             
                  end
         | 
| 315 315 |  | 
| 316 316 | 
             
                  if Thread.current[Logging::NestedDiagnosticContext::NAME]
         | 
| 317 | 
            -
                     | 
| 317 | 
            +
                    ndc = Thread.current[Logging::NestedDiagnosticContext::NAME].dup
         | 
| 318 318 | 
             
                  end
         | 
| 319 319 |  | 
| 320 | 
            -
                  self.send(m,  | 
| 320 | 
            +
                  self.send(m, *a) { |*args|
         | 
| 321 321 | 
             
                    Logging::MappedDiagnosticContext.inherit(mdc)
         | 
| 322 322 | 
             
                    Logging::NestedDiagnosticContext.inherit(ndc)
         | 
| 323 323 | 
             
                    b.call(*args)
         | 
    
        data/lib/logging/log_event.rb
    CHANGED
    
    | @@ -13,7 +13,7 @@ module Logging | |
| 13 13 | 
             
                # * $3 == method name (might be nil)
         | 
| 14 14 | 
             
                CALLER_RGXP = %r/([-\.\/\(\)\w]+):(\d+)(?::in `(\w+)')?/o
         | 
| 15 15 | 
             
                #CALLER_INDEX = 2
         | 
| 16 | 
            -
                CALLER_INDEX = ((defined? JRUBY_VERSION and JRUBY_VERSION | 
| 16 | 
            +
                CALLER_INDEX = ((defined? JRUBY_VERSION and JRUBY_VERSION > '1.6') or (defined? RUBY_ENGINE and RUBY_ENGINE[%r/^rbx/i])) ? 1 : 2
         | 
| 17 17 | 
             
                # :startdoc:
         | 
| 18 18 |  | 
| 19 19 | 
             
                # call-seq:
         | 
    
        data/test/layouts/test_yaml.rb
    CHANGED
    
    | @@ -98,7 +98,7 @@ module TestLayouts | |
| 98 98 | 
             
                  assert_match %r/\A--- ?\nthread_id: -?\d+\n\z/, @layout.format(event)
         | 
| 99 99 |  | 
| 100 100 | 
             
                  @layout.items = %w[thread]
         | 
| 101 | 
            -
                  assert_match %r/\A--- ?\nthread:  | 
| 101 | 
            +
                  assert_match %r/\A--- ?\nthread: ?\n/, @layout.format(event)
         | 
| 102 102 | 
             
                  Thread.current[:name] = "Main"
         | 
| 103 103 | 
             
                  assert_match %r/\A--- ?\nthread: Main\n/, @layout.format(event)
         | 
| 104 104 |  | 
    
        data/version.txt
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            1.8. | 
| 1 | 
            +
            1.8.1
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: logging
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.8. | 
| 4 | 
            +
              version: 1.8.1
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2013-01-02 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: little-plugger
         | 
| @@ -120,13 +120,16 @@ files: | |
| 120 120 | 
             
            - examples/classes.rb
         | 
| 121 121 | 
             
            - examples/colorization.rb
         | 
| 122 122 | 
             
            - examples/consolidation.rb
         | 
| 123 | 
            +
            - examples/custom_log_levels.rb
         | 
| 123 124 | 
             
            - examples/fork.rb
         | 
| 124 125 | 
             
            - examples/formatting.rb
         | 
| 125 126 | 
             
            - examples/hierarchies.rb
         | 
| 126 127 | 
             
            - examples/layouts.rb
         | 
| 128 | 
            +
            - examples/lazy.rb
         | 
| 127 129 | 
             
            - examples/loggers.rb
         | 
| 128 130 | 
             
            - examples/mdc.rb
         | 
| 129 131 | 
             
            - examples/names.rb
         | 
| 132 | 
            +
            - examples/rspec_integration.rb
         | 
| 130 133 | 
             
            - examples/simple.rb
         | 
| 131 134 | 
             
            - lib/logging.rb
         | 
| 132 135 | 
             
            - lib/logging/appender.rb
         |