semantic_logger 0.6.2 → 0.7.0
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/Gemfile +9 -0
 - data/Gemfile.lock +29 -0
 - data/README.md +43 -15
 - data/lib/semantic_logger.rb +0 -3
 - data/lib/semantic_logger/base.rb +33 -14
 - data/lib/semantic_logger/logger.rb +13 -6
 - data/lib/semantic_logger/version.rb +1 -1
 - data/{bson_client.log → nbproject/private/config.properties} +0 -0
 - data/nbproject/private/private.properties +1 -0
 - data/nbproject/private/private.xml +4 -0
 - data/nbproject/private/rake-d.txt +4 -0
 - data/nbproject/project.properties +7 -0
 - data/nbproject/project.xml +16 -0
 - data/test/appender_file_test.rb +2 -2
 - data/test/appender_wrapper_test.rb +3 -2
 - data/test/logger_test.rb +23 -7
 - metadata +63 -60
 
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            GEM
         
     | 
| 
      
 2 
     | 
    
         
            +
              remote: http://rubygems.org/
         
     | 
| 
      
 3 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 4 
     | 
    
         
            +
                activesupport (3.2.8)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  i18n (~> 0.6)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  multi_json (~> 1.0)
         
     | 
| 
      
 7 
     | 
    
         
            +
                bson (1.7.0)
         
     | 
| 
      
 8 
     | 
    
         
            +
                bson_ext (1.7.0)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  bson (~> 1.7.0)
         
     | 
| 
      
 10 
     | 
    
         
            +
                i18n (0.6.1)
         
     | 
| 
      
 11 
     | 
    
         
            +
                mongo (1.7.0)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  bson (~> 1.7.0)
         
     | 
| 
      
 13 
     | 
    
         
            +
                multi_json (1.3.6)
         
     | 
| 
      
 14 
     | 
    
         
            +
                shoulda (3.3.0)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  shoulda-context (~> 1.0)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  shoulda-matchers (~> 1.4)
         
     | 
| 
      
 17 
     | 
    
         
            +
                shoulda-context (1.0.0)
         
     | 
| 
      
 18 
     | 
    
         
            +
                shoulda-matchers (1.4.0)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  activesupport (>= 3.0.0)
         
     | 
| 
      
 20 
     | 
    
         
            +
                sync_attr (0.1.1)
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            PLATFORMS
         
     | 
| 
      
 23 
     | 
    
         
            +
              ruby
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            DEPENDENCIES
         
     | 
| 
      
 26 
     | 
    
         
            +
              bson_ext
         
     | 
| 
      
 27 
     | 
    
         
            +
              mongo
         
     | 
| 
      
 28 
     | 
    
         
            +
              shoulda
         
     | 
| 
      
 29 
     | 
    
         
            +
              sync_attr
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,7 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            semantic_logger
         
     | 
| 
      
 2 
     | 
    
         
            +
            ===============
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            Ruby and Rails Logger enhanced with semantic capabilities, high performance, standardized
         
     | 
| 
      
 5 
     | 
    
         
            +
            logging with multiple appenders
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            * http://github.com/ClarityServices/semantic_logger
         
     | 
| 
       5 
8 
     | 
    
         | 
| 
       6 
9 
     | 
    
         
             
            ### Introduction
         
     | 
| 
       7 
10 
     | 
    
         | 
| 
         @@ -122,7 +125,33 @@ The following output will be written to file: 
     | 
|
| 
       122 
125 
     | 
    
         
             
                2012-08-30 15:37:29.474 I [48308:ScriptThreadProcess: script/rails] Rails -- Calling external interface (5.2ms)
         
     | 
| 
       123 
126 
     | 
    
         | 
| 
       124 
127 
     | 
    
         
             
            If an exception is raised during the block the exception is logged
         
     | 
| 
       125 
     | 
    
         
            -
            at the same log level as the benchmark along with the duration and message
         
     | 
| 
      
 128 
     | 
    
         
            +
            at the same log level as the benchmark along with the duration and message.
         
     | 
| 
      
 129 
     | 
    
         
            +
            The exception will flow through to the caller unchanged
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            ```
         
     | 
| 
      
 132 
     | 
    
         
            +
            Parameters to benchmark_info, benchmark_debug, etc..
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
            message
         
     | 
| 
      
 135 
     | 
    
         
            +
              The message for this log entry
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
            params:
         
     | 
| 
      
 138 
     | 
    
         
            +
              :log_exception
         
     | 
| 
      
 139 
     | 
    
         
            +
                Control whether or how an exception thrown in the block is
         
     | 
| 
      
 140 
     | 
    
         
            +
                reported by SemanticLogger. Values:
         
     | 
| 
      
 141 
     | 
    
         
            +
                :full
         
     | 
| 
      
 142 
     | 
    
         
            +
                  Log the exception class, message, and backtrace
         
     | 
| 
      
 143 
     | 
    
         
            +
                :partial
         
     | 
| 
      
 144 
     | 
    
         
            +
                  Log the exception class and messag
         
     | 
| 
      
 145 
     | 
    
         
            +
                  The backtrace will not be logged
         
     | 
| 
      
 146 
     | 
    
         
            +
                :off
         
     | 
| 
      
 147 
     | 
    
         
            +
                  Any unhandled exception from the block will not be logged
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
              :min_duration
         
     | 
| 
      
 150 
     | 
    
         
            +
                Only log if the block takes longer than this duration in ms
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
              :payload
         
     | 
| 
      
 153 
     | 
    
         
            +
                To log a custom payload along with this log entry
         
     | 
| 
      
 154 
     | 
    
         
            +
            ```
         
     | 
| 
       126 
155 
     | 
    
         | 
| 
       127 
156 
     | 
    
         
             
            #### Logging levels
         
     | 
| 
       128 
157 
     | 
    
         | 
| 
         @@ -384,7 +413,7 @@ specific. 
     | 
|
| 
       384 
413 
     | 
    
         | 
| 
       385 
414 
     | 
    
         
             
            ### Install
         
     | 
| 
       386 
415 
     | 
    
         | 
| 
       387 
     | 
    
         
            -
                gem install  
     | 
| 
      
 416 
     | 
    
         
            +
                gem install semantic_logger
         
     | 
| 
       388 
417 
     | 
    
         | 
| 
       389 
418 
     | 
    
         
             
            To log to MongoDB
         
     | 
| 
       390 
419 
     | 
    
         | 
| 
         @@ -401,9 +430,9 @@ Want to contribute to Semantic Logger? 
     | 
|
| 
       401 
430 
     | 
    
         | 
| 
       402 
431 
     | 
    
         
             
            First clone the repo and run the tests:
         
     | 
| 
       403 
432 
     | 
    
         | 
| 
       404 
     | 
    
         
            -
                git clone git://github.com/ClarityServices/ 
     | 
| 
       405 
     | 
    
         
            -
                cd  
     | 
| 
       406 
     | 
    
         
            -
                 
     | 
| 
      
 433 
     | 
    
         
            +
                git clone git://github.com/ClarityServices/semantic_logger.git
         
     | 
| 
      
 434 
     | 
    
         
            +
                cd semantic_logger
         
     | 
| 
      
 435 
     | 
    
         
            +
                ruby -S rake test
         
     | 
| 
       407 
436 
     | 
    
         | 
| 
       408 
437 
     | 
    
         
             
            Feel free to ping the mailing list with any issues and we'll try to resolve it.
         
     | 
| 
       409 
438 
     | 
    
         | 
| 
         @@ -412,20 +441,19 @@ Contributing 
     | 
|
| 
       412 
441 
     | 
    
         | 
| 
       413 
442 
     | 
    
         
             
            Once you've made your great commits:
         
     | 
| 
       414 
443 
     | 
    
         | 
| 
       415 
     | 
    
         
            -
            1. [Fork](http://help.github.com/forking/)  
     | 
| 
      
 444 
     | 
    
         
            +
            1. [Fork](http://help.github.com/forking/) semantic_logger
         
     | 
| 
       416 
445 
     | 
    
         
             
            2. Create a topic branch - `git checkout -b my_branch`
         
     | 
| 
       417 
446 
     | 
    
         
             
            3. Push to your branch - `git push origin my_branch`
         
     | 
| 
       418 
     | 
    
         
            -
            4. Create an [Issue](http://github.com/ClarityServices/ 
     | 
| 
      
 447 
     | 
    
         
            +
            4. Create an [Issue](http://github.com/ClarityServices/semantic_logger/issues) with a link to your branch
         
     | 
| 
       419 
448 
     | 
    
         
             
            5. That's it!
         
     | 
| 
       420 
449 
     | 
    
         | 
| 
       421 
450 
     | 
    
         
             
            Meta
         
     | 
| 
       422 
451 
     | 
    
         
             
            ----
         
     | 
| 
       423 
452 
     | 
    
         | 
| 
       424 
     | 
    
         
            -
            * Code: `git clone git://github.com/ClarityServices/ 
     | 
| 
       425 
     | 
    
         
            -
            * Home: <https://github.com/ClarityServices/ 
     | 
| 
       426 
     | 
    
         
            -
            *  
     | 
| 
       427 
     | 
    
         
            -
            *  
     | 
| 
       428 
     | 
    
         
            -
            * Gems: <http://rubygems.org/gems/semantic-logger>
         
     | 
| 
      
 453 
     | 
    
         
            +
            * Code: `git clone git://github.com/ClarityServices/semantic_logger.git`
         
     | 
| 
      
 454 
     | 
    
         
            +
            * Home: <https://github.com/ClarityServices/semantic_logger>
         
     | 
| 
      
 455 
     | 
    
         
            +
            * Bugs: <http://github.com/reidmorrison/semantic_logger/issues>
         
     | 
| 
      
 456 
     | 
    
         
            +
            * Gems: <http://rubygems.org/gems/semantic_logger>
         
     | 
| 
       429 
457 
     | 
    
         | 
| 
       430 
458 
     | 
    
         
             
            This project uses [Semantic Versioning](http://semver.org/).
         
     | 
| 
       431 
459 
     | 
    
         | 
    
        data/lib/semantic_logger.rb
    CHANGED
    
    
    
        data/lib/semantic_logger/base.rb
    CHANGED
    
    | 
         @@ -33,13 +33,13 @@ module SemanticLogger 
     | 
|
| 
       33 
33 
     | 
    
         
             
                        exception = log.payload
         
     | 
| 
       34 
34 
     | 
    
         
             
                        message << " -- " << "#{exception.class}: #{exception.message}\n#{(exception.backtrace || []).join("\n")}"
         
     | 
| 
       35 
35 
     | 
    
         
             
                      else
         
     | 
| 
       36 
     | 
    
         
            -
                        message << " -- " << log.payload 
     | 
| 
      
 36 
     | 
    
         
            +
                        message << " -- " << self.class.inspect_payload(log.payload)
         
     | 
| 
       37 
37 
     | 
    
         
             
                      end
         
     | 
| 
       38 
38 
     | 
    
         
             
                    end
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                     
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                     
     | 
| 
      
 40 
     | 
    
         
            +
                    duration_str = log.duration ? "(#{'%.1f' % log.duration}ms) " : ''
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                    "#{SemanticLogger::Base.formatted_time(log.time)} #{log.level.to_s[0..0].upcase} [#{$$}:#{log.thread_name}] #{tags}#{duration_str}#{log.name} -- #{message}"
         
     | 
| 
       43 
43 
     | 
    
         
             
                  end
         
     | 
| 
       44 
44 
     | 
    
         
             
                end
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
         @@ -113,25 +113,33 @@ module SemanticLogger 
     | 
|
| 
       113 
113 
     | 
    
         
             
                      @level_index <= #{index}
         
     | 
| 
       114 
114 
     | 
    
         
             
                    end
         
     | 
| 
       115 
115 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
                    #  
     | 
| 
       117 
     | 
    
         
            -
                    #   If an exception occurs in the block the exception is logged using the
         
     | 
| 
       118 
     | 
    
         
            -
                    #   same log level. The exception will flow through to the caller unchanged
         
     | 
| 
       119 
     | 
    
         
            -
                    def benchmark_#{level}(message, payload = nil)
         
     | 
| 
      
 116 
     | 
    
         
            +
                    def benchmark_#{level}(message, params = nil)
         
     | 
| 
       120 
117 
     | 
    
         
             
                      raise "Mandatory block missing" unless block_given?
         
     | 
| 
      
 118 
     | 
    
         
            +
                      log_exception = params.nil? ? :full : params[:log_exception]
         
     | 
| 
      
 119 
     | 
    
         
            +
                      min_duration  = params.nil? ? 0.0   : (params[:min_duration] || 0.0)
         
     | 
| 
      
 120 
     | 
    
         
            +
                      payload       = params.nil? ? nil   : params[:payload]
         
     | 
| 
       121 
121 
     | 
    
         
             
                      if @level_index <= #{index}
         
     | 
| 
       122 
122 
     | 
    
         
             
                        start = Time.now
         
     | 
| 
       123 
123 
     | 
    
         
             
                        begin
         
     | 
| 
       124 
124 
     | 
    
         
             
                          result = yield
         
     | 
| 
       125 
125 
     | 
    
         
             
                          end_time = Time.now
         
     | 
| 
       126 
     | 
    
         
            -
                           
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
      
 126 
     | 
    
         
            +
                          duration = 1000.0 * (end_time - start)
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                          # Only log if the block took longer than 'min_duration' to complete
         
     | 
| 
      
 129 
     | 
    
         
            +
                          if duration >= min_duration
         
     | 
| 
      
 130 
     | 
    
         
            +
                            # Add scoped payload
         
     | 
| 
      
 131 
     | 
    
         
            +
                            if self.payload
         
     | 
| 
      
 132 
     | 
    
         
            +
                              payload = payload.nil? ? self.payload : self.payload.merge(payload)
         
     | 
| 
      
 133 
     | 
    
         
            +
                            end
         
     | 
| 
      
 134 
     | 
    
         
            +
                            log Log.new(:#{level}, self.class.thread_name, name, message, payload, end_time, duration, tags, #{index})
         
     | 
| 
       129 
135 
     | 
    
         
             
                          end
         
     | 
| 
       130 
     | 
    
         
            -
                          log Log.new(:#{level}, self.class.thread_name, name, message, payload, end_time, 1000.0 * (end_time - start), tags, #{index})
         
     | 
| 
       131 
136 
     | 
    
         
             
                          result
         
     | 
| 
       132 
137 
     | 
    
         
             
                        rescue Exception => exc
         
     | 
| 
       133 
     | 
    
         
            -
                           
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
      
 138 
     | 
    
         
            +
                          if log_exception == :full
         
     | 
| 
      
 139 
     | 
    
         
            +
                            log Log.new(:#{level}, self.class.thread_name, name, message, exc, Time.now, 1000.0 * (Time.now - start), tags, #{index})
         
     | 
| 
      
 140 
     | 
    
         
            +
                          elsif log_exception == :partial
         
     | 
| 
      
 141 
     | 
    
         
            +
                            log Log.new(:#{level}, self.class.thread_name, name, "\#{message} -- \#{exception.class}: \#{exception.message}", payload, end_time, 1000.0 * (end_time - start), tags, #{index})
         
     | 
| 
      
 142 
     | 
    
         
            +
                          end
         
     | 
| 
       135 
143 
     | 
    
         
             
                          raise exc
         
     | 
| 
       136 
144 
     | 
    
         
             
                        end
         
     | 
| 
       137 
145 
     | 
    
         
             
                      else
         
     | 
| 
         @@ -262,6 +270,17 @@ module SemanticLogger 
     | 
|
| 
       262 
270 
     | 
    
         
             
                  end
         
     | 
| 
       263 
271 
     | 
    
         
             
                end
         
     | 
| 
       264 
272 
     | 
    
         | 
| 
      
 273 
     | 
    
         
            +
                if RUBY_VERSION.to_f >= 1.9
         
     | 
| 
      
 274 
     | 
    
         
            +
                  # With Ruby 1.9 calling .to_s on a hash now returns { 'a' => 1 }
         
     | 
| 
      
 275 
     | 
    
         
            +
                  def self.inspect_payload(payload)
         
     | 
| 
      
 276 
     | 
    
         
            +
                    payload.to_s
         
     | 
| 
      
 277 
     | 
    
         
            +
                  end
         
     | 
| 
      
 278 
     | 
    
         
            +
                else
         
     | 
| 
      
 279 
     | 
    
         
            +
                  def self.inspect_payload(payload)
         
     | 
| 
      
 280 
     | 
    
         
            +
                    payload.inspect
         
     | 
| 
      
 281 
     | 
    
         
            +
                  end
         
     | 
| 
      
 282 
     | 
    
         
            +
                end
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
       265 
284 
     | 
    
         
             
                # Internal method to return the log level as an internal index
         
     | 
| 
       266 
285 
     | 
    
         
             
                # Also supports mapping the ::Logger levels to SemanticLogger levels
         
     | 
| 
       267 
286 
     | 
    
         
             
                def self.map_level_to_index(level)
         
     | 
| 
         @@ -1,3 +1,6 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'thread'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'sync_attr'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       1 
4 
     | 
    
         
             
            # Logger is the interface used by
         
     | 
| 
       2 
5 
     | 
    
         
             
            #
         
     | 
| 
       3 
6 
     | 
    
         
             
            # Logger maintains the logging name to be used for all log entries generated
         
     | 
| 
         @@ -63,13 +66,17 @@ module SemanticLogger 
     | 
|
| 
       63 
66 
     | 
    
         
             
                #   logger = SemanticLogger::Logger.new('MyClass')
         
     | 
| 
       64 
67 
     | 
    
         
             
                #
         
     | 
| 
       65 
68 
     | 
    
         
             
                # Parameters:
         
     | 
| 
       66 
     | 
    
         
            -
                #  application 
     | 
| 
       67 
     | 
    
         
            -
                # 
     | 
| 
       68 
     | 
    
         
            -
                # 
     | 
| 
       69 
     | 
    
         
            -
                # 
     | 
| 
       70 
     | 
    
         
            -
                 
     | 
| 
      
 69 
     | 
    
         
            +
                #  application
         
     | 
| 
      
 70 
     | 
    
         
            +
                #    A class, module or a string with the application/class name
         
     | 
| 
      
 71 
     | 
    
         
            +
                #    to be used in the logger
         
     | 
| 
      
 72 
     | 
    
         
            +
                #
         
     | 
| 
      
 73 
     | 
    
         
            +
                #  level
         
     | 
| 
      
 74 
     | 
    
         
            +
                #    The initial log level to start with for this logger instance
         
     | 
| 
      
 75 
     | 
    
         
            +
                #    Default: SemanticLogger::Logger.default_level
         
     | 
| 
      
 76 
     | 
    
         
            +
                #
         
     | 
| 
      
 77 
     | 
    
         
            +
                def initialize(klass, level=nil)
         
     | 
| 
       71 
78 
     | 
    
         
             
                  @name = klass.is_a?(String) ? klass : klass.name
         
     | 
| 
       72 
     | 
    
         
            -
                  self.level = level
         
     | 
| 
      
 79 
     | 
    
         
            +
                  self.level = level || self.class.default_level
         
     | 
| 
       73 
80 
     | 
    
         
             
                end
         
     | 
| 
       74 
81 
     | 
    
         | 
| 
       75 
82 
     | 
    
         
             
                # Returns [Integer] the number of log entries that have not been written
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            platform.active=Ruby_0
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <?xml version="1.0" encoding="UTF-8"?>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <project xmlns="http://www.netbeans.org/ns/project/1">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <type>org.netbeans.modules.ruby.rubyproject</type>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <configuration>
         
     | 
| 
      
 5 
     | 
    
         
            +
                    <data xmlns="http://www.netbeans.org/ns/ruby-project/1">
         
     | 
| 
      
 6 
     | 
    
         
            +
                        <name>semantic_logger</name>
         
     | 
| 
      
 7 
     | 
    
         
            +
                        <source-roots>
         
     | 
| 
      
 8 
     | 
    
         
            +
                            <root id="src.dir"/>
         
     | 
| 
      
 9 
     | 
    
         
            +
                        </source-roots>
         
     | 
| 
      
 10 
     | 
    
         
            +
                        <test-roots>
         
     | 
| 
      
 11 
     | 
    
         
            +
                            <root id="test.src.dir"/>
         
     | 
| 
      
 12 
     | 
    
         
            +
                            <root id="spec.src.dir"/>
         
     | 
| 
      
 13 
     | 
    
         
            +
                        </test-roots>
         
     | 
| 
      
 14 
     | 
    
         
            +
                    </data>
         
     | 
| 
      
 15 
     | 
    
         
            +
                </configuration>
         
     | 
| 
      
 16 
     | 
    
         
            +
            </project>
         
     | 
    
        data/test/appender_file_test.rb
    CHANGED
    
    | 
         @@ -6,14 +6,14 @@ require 'test/unit' 
     | 
|
| 
       6 
6 
     | 
    
         
             
            require 'shoulda'
         
     | 
| 
       7 
7 
     | 
    
         
             
            require 'logger'
         
     | 
| 
       8 
8 
     | 
    
         
             
            require 'semantic_logger'
         
     | 
| 
       9 
     | 
    
         
            -
            require ' 
     | 
| 
      
 9 
     | 
    
         
            +
            require 'stringio'
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            # Unit Test for SemanticLogger::Appender::File
         
     | 
| 
       12 
12 
     | 
    
         
             
            #
         
     | 
| 
       13 
13 
     | 
    
         
             
            class AppenderFileTest < Test::Unit::TestCase
         
     | 
| 
       14 
14 
     | 
    
         
             
              context SemanticLogger::Appender::File do
         
     | 
| 
       15 
15 
     | 
    
         
             
                setup do
         
     | 
| 
       16 
     | 
    
         
            -
                  @time = Time. 
     | 
| 
      
 16 
     | 
    
         
            +
                  @time = Time.new
         
     | 
| 
       17 
17 
     | 
    
         
             
                  @io = StringIO.new
         
     | 
| 
       18 
18 
     | 
    
         
             
                  @appender = SemanticLogger::Appender::File.new(@io)
         
     | 
| 
       19 
19 
     | 
    
         
             
                  @hash = { :session_id => 'HSSKLEU@JDK767', :tracking_number => 12345 }
         
     | 
| 
         @@ -1,19 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Allow test to be run in-place without requiring a gem install
         
     | 
| 
       2 
2 
     | 
    
         
             
            $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
         
     | 
| 
      
 3 
     | 
    
         
            +
            $LOAD_PATH.unshift File.dirname(__FILE__)
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            require 'rubygems'
         
     | 
| 
       5 
6 
     | 
    
         
             
            require 'test/unit'
         
     | 
| 
       6 
7 
     | 
    
         
             
            require 'shoulda'
         
     | 
| 
       7 
8 
     | 
    
         
             
            require 'logger'
         
     | 
| 
       8 
9 
     | 
    
         
             
            require 'semantic_logger'
         
     | 
| 
       9 
     | 
    
         
            -
            require ' 
     | 
| 
      
 10 
     | 
    
         
            +
            require 'mock_logger'
         
     | 
| 
       10 
11 
     | 
    
         | 
| 
       11 
12 
     | 
    
         
             
            # Unit Test for SemanticLogger::Appender::Wrapper
         
     | 
| 
       12 
13 
     | 
    
         
             
            #
         
     | 
| 
       13 
14 
     | 
    
         
             
            class AppenderWrapperTest < Test::Unit::TestCase
         
     | 
| 
       14 
15 
     | 
    
         
             
              context SemanticLogger::Appender::Wrapper do
         
     | 
| 
       15 
16 
     | 
    
         
             
                setup do
         
     | 
| 
       16 
     | 
    
         
            -
                  @time = Time. 
     | 
| 
      
 17 
     | 
    
         
            +
                  @time = Time.new
         
     | 
| 
       17 
18 
     | 
    
         
             
                  @mock_logger = MockLogger.new
         
     | 
| 
       18 
19 
     | 
    
         
             
                  @appender = SemanticLogger::Appender::Wrapper.new(@mock_logger)
         
     | 
| 
       19 
20 
     | 
    
         
             
                  @hash = { :session_id => 'HSSKLEU@JDK767', :tracking_number => 12345 }
         
     | 
    
        data/test/logger_test.rb
    CHANGED
    
    | 
         @@ -6,7 +6,6 @@ require 'test/unit' 
     | 
|
| 
       6 
6 
     | 
    
         
             
            require 'shoulda'
         
     | 
| 
       7 
7 
     | 
    
         
             
            require 'logger'
         
     | 
| 
       8 
8 
     | 
    
         
             
            require 'semantic_logger'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'test/mock_logger'
         
     | 
| 
       10 
9 
     | 
    
         | 
| 
       11 
10 
     | 
    
         
             
            # Unit Test for SemanticLogger::Logger
         
     | 
| 
       12 
11 
     | 
    
         
             
            class LoggerTest < Test::Unit::TestCase
         
     | 
| 
         @@ -71,24 +70,41 @@ class LoggerTest < Test::Unit::TestCase 
     | 
|
| 
       71 
70 
     | 
    
         
             
                    end
         
     | 
| 
       72 
71 
     | 
    
         | 
| 
       73 
72 
     | 
    
         
             
                    context "Ruby Logger" do
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
73 
     | 
    
         
             
                      # Ensure that any log level can be logged
         
     | 
| 
       76 
74 
     | 
    
         
             
                      Logger::Severity.constants.each do |level|
         
     | 
| 
       77 
75 
     | 
    
         
             
                        should "log Ruby logger #{level} info" do
         
     | 
| 
       78 
76 
     | 
    
         
             
                          @logger.level = Logger::Severity.const_get(level)
         
     | 
| 
       79 
     | 
    
         
            -
                           
     | 
| 
       80 
     | 
    
         
            -
                          if level == 'UNKNOWN'
         
     | 
| 
      
 77 
     | 
    
         
            +
                          if level.to_s == 'UNKNOWN'
         
     | 
| 
       81 
78 
     | 
    
         
             
                            assert_equal Logger::Severity.const_get('ERROR')+1, @logger.send(:level_index)
         
     | 
| 
       82 
79 
     | 
    
         
             
                          else
         
     | 
| 
       83 
80 
     | 
    
         
             
                            assert_equal Logger::Severity.const_get(level)+1, @logger.send(:level_index)
         
     | 
| 
       84 
81 
     | 
    
         
             
                          end
         
     | 
| 
       85 
     | 
    
         
            -
                          #         @logger.send(level, 'hello world', @hash) { "Calculations" }
         
     | 
| 
       86 
     | 
    
         
            -
                          #         SemanticLogger::Logger.flush
         
     | 
| 
       87 
     | 
    
         
            -
                          #         assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ \w \[\d+:.+\] LoggerTest -- hello world -- Calculations -- #{@hash_str}/, @mock_logger.message
         
     | 
| 
       88 
82 
     | 
    
         
             
                        end
         
     | 
| 
       89 
83 
     | 
    
         
             
                      end
         
     | 
| 
       90 
84 
     | 
    
         
             
                    end
         
     | 
| 
       91 
85 
     | 
    
         | 
| 
      
 86 
     | 
    
         
            +
                    context "benchmark" do
         
     | 
| 
      
 87 
     | 
    
         
            +
                      # Ensure that any log level can be benchmarked and logged
         
     | 
| 
      
 88 
     | 
    
         
            +
                      SemanticLogger::LEVELS.each do |level|
         
     | 
| 
      
 89 
     | 
    
         
            +
                        should "log #{level} info" do
         
     | 
| 
      
 90 
     | 
    
         
            +
                          assert_equal "result", @logger.send("benchmark_#{level}".to_sym, 'hello world') { "result" }
         
     | 
| 
      
 91 
     | 
    
         
            +
                          SemanticLogger::Logger.flush
         
     | 
| 
      
 92 
     | 
    
         
            +
                          assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ \w \[\d+:.+\] \(\d+\.\dms\) LoggerTest -- hello world/, @mock_logger.message
         
     | 
| 
      
 93 
     | 
    
         
            +
                        end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                        should "log #{level} info with payload" do
         
     | 
| 
      
 96 
     | 
    
         
            +
                          assert_equal "result", @logger.send("benchmark_#{level}".to_sym, 'hello world', :payload => @hash) { "result" }
         
     | 
| 
      
 97 
     | 
    
         
            +
                          SemanticLogger::Logger.flush
         
     | 
| 
      
 98 
     | 
    
         
            +
                          assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ \w \[\d+:.+\] \(\d+\.\dms\) LoggerTest -- hello world -- #{@hash_str}/, @mock_logger.message
         
     | 
| 
      
 99 
     | 
    
         
            +
                        end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                        should "not log #{level} info when block is faster than :min_duration" do
         
     | 
| 
      
 102 
     | 
    
         
            +
                          assert_equal "result", @logger.send("benchmark_#{level}".to_sym, 'hello world', :min_duration => 0.5) { "result" }
         
     | 
| 
      
 103 
     | 
    
         
            +
                          SemanticLogger::Logger.flush
         
     | 
| 
      
 104 
     | 
    
         
            +
                          assert_nil @mock_logger.message
         
     | 
| 
      
 105 
     | 
    
         
            +
                        end
         
     | 
| 
      
 106 
     | 
    
         
            +
                      end
         
     | 
| 
      
 107 
     | 
    
         
            +
                    end
         
     | 
| 
       92 
108 
     | 
    
         | 
| 
       93 
109 
     | 
    
         
             
                  end
         
     | 
| 
       94 
110 
     | 
    
         
             
                end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,58 +1,59 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            --- !ruby/object:Gem::Specification 
     | 
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: semantic_logger
         
     | 
| 
       3 
     | 
    
         
            -
            version: !ruby/object:Gem::Version 
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
              - 0
         
     | 
| 
       7 
     | 
    
         
            -
              - 6
         
     | 
| 
       8 
     | 
    
         
            -
              - 2
         
     | 
| 
       9 
     | 
    
         
            -
              version: 0.6.2
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.7.0
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
       10 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
     | 
    
         
            -
            authors: 
     | 
| 
      
 7 
     | 
    
         
            +
            authors:
         
     | 
| 
       12 
8 
     | 
    
         
             
            - Reid Morrison
         
     | 
| 
       13 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       14 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       15 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            dependencies: 
         
     | 
| 
       20 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-10-10 00:00:00.000000000 Z
         
     | 
| 
      
 13 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 14 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
       21 
15 
     | 
    
         
             
              name: sync_attr
         
     | 
| 
       22 
     | 
    
         
            -
               
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                requirements: 
     | 
| 
       25 
     | 
    
         
            -
                - -  
     | 
| 
       26 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       27 
     | 
    
         
            -
                     
     | 
| 
       28 
     | 
    
         
            -
                    - 0
         
     | 
| 
       29 
     | 
    
         
            -
                    version: "0"
         
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 17 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 18 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 19 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 20 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 21 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       30 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       31 
     | 
    
         
            -
              version_requirements: *id001
         
     | 
| 
       32 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       33 
     | 
    
         
            -
              name: shoulda
         
     | 
| 
       34 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
               
     | 
| 
       36 
     | 
    
         
            -
                 
     | 
| 
       37 
     | 
    
         
            -
                 
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                     
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 25 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 26 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 27 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 30 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 31 
     | 
    
         
            +
              name: shoulda
         
     | 
| 
      
 32 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 33 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 34 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 35 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 36 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 37 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       42 
38 
     | 
    
         
             
              type: :development
         
     | 
| 
       43 
     | 
    
         
            -
               
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
      
 39 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 40 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 41 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 43 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 44 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 45 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 46 
     | 
    
         
            +
            description: Machine readable document oriented logging with support for MongoDB and
         
     | 
| 
      
 47 
     | 
    
         
            +
              text files
         
     | 
| 
      
 48 
     | 
    
         
            +
            email:
         
     | 
| 
       46 
49 
     | 
    
         
             
            - reidmo@gmail.com
         
     | 
| 
       47 
50 
     | 
    
         
             
            executables: []
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
51 
     | 
    
         
             
            extensions: []
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
52 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
            files: 
         
     | 
| 
       54 
     | 
    
         
            -
            - bson_client.log
         
     | 
| 
      
 53 
     | 
    
         
            +
            files:
         
     | 
| 
       55 
54 
     | 
    
         
             
            - FUTURE.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 56 
     | 
    
         
            +
            - Gemfile.lock
         
     | 
| 
       56 
57 
     | 
    
         
             
            - init.txt
         
     | 
| 
       57 
58 
     | 
    
         
             
            - lib/semantic_logger/appender/file.rb
         
     | 
| 
       58 
59 
     | 
    
         
             
            - lib/semantic_logger/appender/mongodb.rb
         
     | 
| 
         @@ -63,6 +64,12 @@ files: 
     | 
|
| 
       63 
64 
     | 
    
         
             
            - lib/semantic_logger/version.rb
         
     | 
| 
       64 
65 
     | 
    
         
             
            - lib/semantic_logger.rb
         
     | 
| 
       65 
66 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
      
 67 
     | 
    
         
            +
            - nbproject/private/config.properties
         
     | 
| 
      
 68 
     | 
    
         
            +
            - nbproject/private/private.properties
         
     | 
| 
      
 69 
     | 
    
         
            +
            - nbproject/private/private.xml
         
     | 
| 
      
 70 
     | 
    
         
            +
            - nbproject/private/rake-d.txt
         
     | 
| 
      
 71 
     | 
    
         
            +
            - nbproject/project.properties
         
     | 
| 
      
 72 
     | 
    
         
            +
            - nbproject/project.xml
         
     | 
| 
       66 
73 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       67 
74 
     | 
    
         
             
            - README.md
         
     | 
| 
       68 
75 
     | 
    
         
             
            - test/appender_file_test.rb
         
     | 
| 
         @@ -70,35 +77,31 @@ files: 
     | 
|
| 
       70 
77 
     | 
    
         
             
            - test/appender_wrapper_test.rb
         
     | 
| 
       71 
78 
     | 
    
         
             
            - test/logger_test.rb
         
     | 
| 
       72 
79 
     | 
    
         
             
            - test/mock_logger.rb
         
     | 
| 
       73 
     | 
    
         
            -
            has_rdoc: true
         
     | 
| 
       74 
80 
     | 
    
         
             
            homepage: https://github.com/ClarityServices/semantic_logger
         
     | 
| 
       75 
81 
     | 
    
         
             
            licenses: []
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
82 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       78 
83 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
            require_paths: 
         
     | 
| 
      
 84 
     | 
    
         
            +
            require_paths:
         
     | 
| 
       81 
85 
     | 
    
         
             
            - lib
         
     | 
| 
       82 
     | 
    
         
            -
            required_ruby_version: !ruby/object:Gem::Requirement 
     | 
| 
       83 
     | 
    
         
            -
               
     | 
| 
       84 
     | 
    
         
            -
               
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
                   
     | 
| 
       88 
     | 
    
         
            -
                   
     | 
| 
       89 
     | 
    
         
            -
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       90 
     | 
    
         
            -
              requirements: 
         
     | 
| 
       91 
     | 
    
         
            -
              - - ">="
         
     | 
| 
       92 
     | 
    
         
            -
                - !ruby/object:Gem::Version 
         
     | 
| 
       93 
     | 
    
         
            -
                  segments: 
         
     | 
| 
      
 86 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 87 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 88 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 89 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 90 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 91 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 92 
     | 
    
         
            +
                  segments:
         
     | 
| 
       94 
93 
     | 
    
         
             
                  - 0
         
     | 
| 
       95 
     | 
    
         
            -
                   
     | 
| 
      
 94 
     | 
    
         
            +
                  hash: 3405593264048637508
         
     | 
| 
      
 95 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 96 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 97 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 98 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 99 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 100 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
       96 
101 
     | 
    
         
             
            requirements: []
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
102 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       99 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 103 
     | 
    
         
            +
            rubygems_version: 1.8.24
         
     | 
| 
       100 
104 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       101 
105 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       102 
106 
     | 
    
         
             
            summary: Semantic Logger for Ruby, and Ruby on Rails
         
     | 
| 
       103 
107 
     | 
    
         
             
            test_files: []
         
     | 
| 
       104 
     | 
    
         
            -
             
     |