logger_facade 0.3.0 → 0.3.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/logger_facade/middleware/rack.rb +13 -1
- data/lib/logger_facade/plugins/airbrake.rb +19 -28
- data/lib/logger_facade/version.rb +1 -1
- data/spec/unit/middleware/rack_spec.rb +27 -1
- data/spec/unit/plugins/airbrake_spec.rb +22 -2
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 23cc1584b5cfa42c103b970633ce4ae8b0a53690
         | 
| 4 | 
            +
              data.tar.gz: 2886973542c5e009e047e29c7c4d150e6a77d9b9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 5c9fd2d2e1e416cc28da978ba219c6ff3c4202c8f99a8acb6aa41df8a15d1b1c3e64d007eb78ed18ec2e2846baa3bd037e9ca60c71a8b5bd0d0f7281a54fe616
         | 
| 7 | 
            +
              data.tar.gz: a18d4667ceb7cd90e2d9b323ab0c17c4f96299a1018a9f58b1c5ff883f52e9fe47f11fbf70cda146f9626830c54362eb78e445136e68decc53d57454c69f4020
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
| @@ -19,7 +19,8 @@ module LoggerFacade::Middleware | |
| 19 19 | 
             
                    metadata["bytes"],
         | 
| 20 20 | 
             
                    metadata["request_time"] ]
         | 
| 21 21 |  | 
| 22 | 
            -
                   | 
| 22 | 
            +
                  severity = get_severity(metadata["response"])
         | 
| 23 | 
            +
                  @logger.send(severity, msg, metadata)
         | 
| 23 24 | 
             
                end
         | 
| 24 25 |  | 
| 25 26 | 
             
                def get_metadata(env, status, header, began_at)
         | 
| @@ -39,5 +40,16 @@ module LoggerFacade::Middleware | |
| 39 40 | 
             
                  }
         | 
| 40 41 | 
             
                end
         | 
| 41 42 |  | 
| 43 | 
            +
                def get_severity(status)
         | 
| 44 | 
            +
                  status = status.to_i
         | 
| 45 | 
            +
                  if status >= 400 and status < 500
         | 
| 46 | 
            +
                    :warn
         | 
| 47 | 
            +
                  elsif status >= 500
         | 
| 48 | 
            +
                    :error
         | 
| 49 | 
            +
                  else
         | 
| 50 | 
            +
                    :info
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 42 54 | 
             
              end
         | 
| 43 55 | 
             
            end
         | 
| @@ -2,21 +2,14 @@ require 'airbrake' | |
| 2 2 |  | 
| 3 3 | 
             
            module LoggerFacade::Plugins
         | 
| 4 4 |  | 
| 5 | 
            -
              class Airbrake
         | 
| 5 | 
            +
              class Airbrake < Base
         | 
| 6 6 |  | 
| 7 | 
            -
                attr_reader : | 
| 7 | 
            +
                attr_reader :environment
         | 
| 8 8 |  | 
| 9 9 | 
             
                def initialize(environment = nil)
         | 
| 10 | 
            -
                   | 
| 10 | 
            +
                  super("LoggerFacade::Plugins::Airbrake", { level: :error })
         | 
| 11 11 | 
             
                  @environment = environment.to_s
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  ::Airbrake.configure do |config|
         | 
| 14 | 
            -
                    config.host    = nil
         | 
| 15 | 
            -
                    config.port    = 80
         | 
| 16 | 
            -
                    config.secure  = config.port == 443
         | 
| 17 | 
            -
                    config.async   = true
         | 
| 18 | 
            -
                    config.development_environments = %w(development test)
         | 
| 19 | 
            -
                  end
         | 
| 12 | 
            +
                  set_default_airbrake_config
         | 
| 20 13 | 
             
                end
         | 
| 21 14 |  | 
| 22 15 | 
             
                def configure(&block)
         | 
| @@ -25,27 +18,17 @@ module LoggerFacade::Plugins | |
| 25 18 | 
             
                  end
         | 
| 26 19 | 
             
                end
         | 
| 27 20 |  | 
| 28 | 
            -
                 | 
| 29 | 
            -
                  false
         | 
| 30 | 
            -
                end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                def trace(logger, message)
         | 
| 33 | 
            -
                  # do nothing
         | 
| 34 | 
            -
                end
         | 
| 21 | 
            +
                protected
         | 
| 35 22 |  | 
| 36 | 
            -
                def  | 
| 37 | 
            -
                   | 
| 38 | 
            -
                end
         | 
| 23 | 
            +
                def log(log_level, message, logger, metadata)
         | 
| 24 | 
            +
                  return unless is_level_active(log_level)
         | 
| 39 25 |  | 
| 40 | 
            -
             | 
| 41 | 
            -
                  # do nothing
         | 
| 26 | 
            +
                  notify(logger, message, metadata)
         | 
| 42 27 | 
             
                end
         | 
| 43 28 |  | 
| 44 | 
            -
                 | 
| 45 | 
            -
                  # do nothing
         | 
| 46 | 
            -
                end
         | 
| 29 | 
            +
                private
         | 
| 47 30 |  | 
| 48 | 
            -
                def  | 
| 31 | 
            +
                def notify(logger, message, metadata)
         | 
| 49 32 | 
             
                  return unless valid_config
         | 
| 50 33 |  | 
| 51 34 | 
             
                  if message.is_a? Exception
         | 
| @@ -55,7 +38,15 @@ module LoggerFacade::Plugins | |
| 55 38 | 
             
                  end
         | 
| 56 39 | 
             
                end
         | 
| 57 40 |  | 
| 58 | 
            -
                 | 
| 41 | 
            +
                def set_default_airbrake_config
         | 
| 42 | 
            +
                  ::Airbrake.configure do |config|
         | 
| 43 | 
            +
                    config.host    = nil
         | 
| 44 | 
            +
                    config.port    = 80
         | 
| 45 | 
            +
                    config.secure  = config.port == 443
         | 
| 46 | 
            +
                    config.async   = true
         | 
| 47 | 
            +
                    config.development_environments = %w(development test)
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
                end
         | 
| 59 50 |  | 
| 60 51 | 
             
                def valid_config
         | 
| 61 52 | 
             
                  config = ::Airbrake.configuration
         | 
| @@ -45,7 +45,33 @@ describe LoggerFacade::Middleware::Rack do | |
| 45 45 | 
             
                  Rack::MockRequest.new(described_class.new(app)).get("/path?q=true")
         | 
| 46 46 | 
             
                end
         | 
| 47 47 | 
             
              end
         | 
| 48 | 
            -
             | 
| 48 | 
            +
             | 
| 49 | 
            +
              context 'severity' do
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                it "log 200 status to info" do
         | 
| 52 | 
            +
                  expect(logger).to receive(:info)
         | 
| 53 | 
            +
                  Rack::MockRequest.new(described_class.new(app)).get("/path")
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                it "log 300 status to info" do
         | 
| 57 | 
            +
                  expect(logger).to receive(:info)
         | 
| 58 | 
            +
                  Rack::MockRequest.new(described_class.new(app)).get("/path")
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                it "log 400 status to warn" do
         | 
| 62 | 
            +
                  expect(logger).to receive(:warn)
         | 
| 63 | 
            +
                  app = -> (env) { [400, env, "app"] }
         | 
| 64 | 
            +
                  Rack::MockRequest.new(described_class.new(app)).get("/path")
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                it "log 500 status to error" do
         | 
| 68 | 
            +
                  expect(logger).to receive(:error)
         | 
| 69 | 
            +
                  app = -> (env) { [500, env, "app"] }
         | 
| 70 | 
            +
                  Rack::MockRequest.new(described_class.new(app)).get("/path")
         | 
| 71 | 
            +
                end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
             | 
| 49 75 | 
             
              context 'with proper metadata' do
         | 
| 50 76 |  | 
| 51 77 | 
             
                after do
         | 
| @@ -4,6 +4,8 @@ describe LoggerFacade::Plugins::Airbrake do | |
| 4 4 |  | 
| 5 5 | 
             
              subject { described_class.new(:test) }
         | 
| 6 6 |  | 
| 7 | 
            +
              let(:message) { "call with message" }
         | 
| 8 | 
            +
             | 
| 7 9 | 
             
              before :each do
         | 
| 8 10 |  | 
| 9 11 | 
             
                subject.configure do |c|
         | 
| @@ -39,13 +41,27 @@ describe LoggerFacade::Plugins::Airbrake do | |
| 39 41 | 
             
                context("logging in #{level} level") do
         | 
| 40 42 |  | 
| 41 43 | 
             
                  it("doesn't notify") do
         | 
| 42 | 
            -
                    message = "call with message"
         | 
| 43 44 | 
             
                    expect(::Airbrake).not_to receive(:notify_or_ignore)
         | 
| 44 45 | 
             
                    subject.send(level.to_sym, "name", message)
         | 
| 45 46 | 
             
                  end
         | 
| 46 47 |  | 
| 47 48 | 
             
                end
         | 
| 48 49 |  | 
| 50 | 
            +
                context("accepts metadata") do
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  it("logging in #{level} level with metadata") do
         | 
| 53 | 
            +
                    expect(::Airbrake).not_to receive(:notify_or_ignore)
         | 
| 54 | 
            +
                    subject.send(level.to_sym, "name", message, metadata: { context: "info" })
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              %w(trace debug info warn error).each do |level|
         | 
| 62 | 
            +
             | 
| 63 | 
            +
             | 
| 64 | 
            +
             | 
| 49 65 | 
             
              end
         | 
| 50 66 |  | 
| 51 67 | 
             
              context("logging in error level") do
         | 
| @@ -53,7 +69,6 @@ describe LoggerFacade::Plugins::Airbrake do | |
| 53 69 | 
             
                context('with message') do
         | 
| 54 70 |  | 
| 55 71 | 
             
                  it("notify") do
         | 
| 56 | 
            -
                    message = "call with message"
         | 
| 57 72 | 
             
                    expect(::Airbrake).to receive(:notify_or_ignore)
         | 
| 58 73 | 
             
                       .with(hash_including(
         | 
| 59 74 | 
             
                         :error_class     => "NAME::LogError",
         | 
| @@ -81,6 +96,11 @@ describe LoggerFacade::Plugins::Airbrake do | |
| 81 96 |  | 
| 82 97 | 
             
                end
         | 
| 83 98 |  | 
| 99 | 
            +
                it("accepts metadata") do
         | 
| 100 | 
            +
                  expect(::Airbrake).to receive(:notify_or_ignore)
         | 
| 101 | 
            +
                  subject.error("name", message, metadata: { context: "information" })
         | 
| 102 | 
            +
                end
         | 
| 103 | 
            +
             | 
| 84 104 | 
             
              end
         | 
| 85 105 |  | 
| 86 106 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: logger_facade
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Pedro Januário
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-01- | 
| 11 | 
            +
            date: 2015-01-09 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |