contextual_logger 1.2.0 → 1.3.0.dg.pre.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.
- checksums.yaml +4 -4
- data/lib/contextual_logger/version.rb +1 -1
- data/lib/contextual_logger.rb +33 -1
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 96fa2fd042325883674d751a6b2443c23e9e6b195f9f15ade2826832c6557735
         | 
| 4 | 
            +
              data.tar.gz: 180923158cdaac1c7cd63755ca93e4cda42aaf48bab442b21981264a255a5765
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 66081a0a05dded370cf77b2e60b2c20884e8993a362bf6be4674b3c4b0c95d4811c208b8b6ab64ea99495fc7ca05b16ba9ef779cb39f4169620a06eac0c12fce
         | 
| 7 | 
            +
              data.tar.gz: 04d1997d713eec2231a08e2085728db8ef438268835b4ac6e3eb866ec01c7d5df0447677de127c286236aa0485d4e233b36214234aa661cd0c30c6fe52eaaef8
         | 
    
        data/lib/contextual_logger.rb
    CHANGED
    
    | @@ -19,6 +19,9 @@ module ContextualLogger | |
| 19 19 | 
             
                unknown: Logger::Severity::UNKNOWN
         | 
| 20 20 | 
             
              }.freeze
         | 
| 21 21 |  | 
| 22 | 
            +
              class LambdaAlreadyDefinedError < StandardError
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 22 25 | 
             
              class << self
         | 
| 23 26 | 
             
                def new(logger)
         | 
| 24 27 | 
             
                  logger.extend(LoggerMixin)
         | 
| @@ -57,6 +60,26 @@ module ContextualLogger | |
| 57 60 | 
             
                  @global_context ||= Context::EMPTY_CONTEXT
         | 
| 58 61 | 
             
                end
         | 
| 59 62 |  | 
| 63 | 
            +
                def add_global_context_lambda(field, lambda)
         | 
| 64 | 
            +
                  if field.blank?
         | 
| 65 | 
            +
                    raise ArgumentError, "The field cannot be empty"
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  unless lambda.respond_to?(:call)
         | 
| 69 | 
            +
                    raise ArgumentError, "A lambda must respond to the :call method"
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                  if global_context_lambdas[field]
         | 
| 73 | 
            +
                    raise ::ContextualLogger::LambdaAlreadyDefinedError, "A lambda for `#{field}` is already defined"
         | 
| 74 | 
            +
                  end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                  @global_context_lambdas[field] = lambda
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                def global_context_lambdas
         | 
| 80 | 
            +
                  @global_context_lambdas ||= {}
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
             | 
| 60 83 | 
             
                def global_context=(context)
         | 
| 61 84 | 
             
                  if (global_context_lock_message = ::ContextualLogger.global_context_lock_message)
         | 
| 62 85 | 
             
                    raise ::ContextualLogger::GlobalContextIsLocked, global_context_lock_message
         | 
| @@ -136,7 +159,8 @@ module ContextualLogger | |
| 136 159 | 
             
                      message = arg1
         | 
| 137 160 | 
             
                      progname = arg2 || @progname
         | 
| 138 161 | 
             
                    end
         | 
| 139 | 
            -
                     | 
| 162 | 
            +
                    full_context = evaluate_global_context_lambdas(deep_merge_with_current_context(context))
         | 
| 163 | 
            +
                    write_entry_to_log(severity, Time.now, progname, message, context: full_context)
         | 
| 140 164 | 
             
                  end
         | 
| 141 165 |  | 
| 142 166 | 
             
                  true
         | 
| @@ -185,5 +209,13 @@ module ContextualLogger | |
| 185 209 | 
             
                    current_context
         | 
| 186 210 | 
             
                  end
         | 
| 187 211 | 
             
                end
         | 
| 212 | 
            +
             | 
| 213 | 
            +
                def evaluate_global_context_lambdas(context)
         | 
| 214 | 
            +
                  if global_context_lambdas.empty?
         | 
| 215 | 
            +
                    context
         | 
| 216 | 
            +
                  else
         | 
| 217 | 
            +
                    global_context_lambdas.transform_values { |lambda| lambda.call }.merge(context)
         | 
| 218 | 
            +
                  end
         | 
| 219 | 
            +
                end
         | 
| 188 220 | 
             
              end
         | 
| 189 221 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: contextual_logger
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.3.0.dg.pre.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - James Ebentier
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023- | 
| 11 | 
            +
            date: 2023-10-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: json
         | 
| @@ -69,9 +69,9 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 69 69 | 
             
                  version: '0'
         | 
| 70 70 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 71 71 | 
             
              requirements:
         | 
| 72 | 
            -
              - - " | 
| 72 | 
            +
              - - ">"
         | 
| 73 73 | 
             
                - !ruby/object:Gem::Version
         | 
| 74 | 
            -
                  version:  | 
| 74 | 
            +
                  version: 1.3.1
         | 
| 75 75 | 
             
            requirements: []
         | 
| 76 76 | 
             
            rubygems_version: 3.1.6
         | 
| 77 77 | 
             
            signing_key:
         |