Skip to content

Commit cfbb704

Browse files
committed
feat(semantic-logging): allow ruby standard logger to be configured to ensure backwards compatibility
1 parent 01f1a8d commit cfbb704

27 files changed

+93
-37
lines changed

lib/db.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
require 'pact_broker/project_root'
77

88
module DB
9-
include SemanticLogger::Loggable
9+
include PactBroker::Logging
1010
##
1111
# Sequel by default does not test connections in its connection pool before
1212
# handing them to a client. To enable connection testing you need to load the

lib/pact_broker/api/renderers/html_pact_renderer.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class HtmlPactRenderer
1212

1313
class NotAPactError < StandardError; end
1414

15-
include SemanticLogger::Loggable
15+
include PactBroker::Logging
1616

1717
def self.call pact, options = {}
1818
new(pact, options).call

lib/pact_broker/api/resources/base_resource.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class BaseResource < Webmachine::Resource
2121
include PactBroker::Services
2222
include PactBroker::Api::PactBrokerUrls
2323
include PactBroker::Api::Resources::Authentication
24-
include SemanticLogger::Loggable
24+
include PactBroker::Logging
2525

2626

2727
attr_accessor :user

lib/pact_broker/api/resources/error_handler.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module Api
66
module Resources
77
class ErrorHandler
88

9-
include SemanticLogger::Loggable
9+
include PactBroker::Logging
1010
include PactBroker::Logging
1111

1212
def self.call e, request, response

lib/pact_broker/app.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
module PactBroker
2020

2121
class App
22-
include SemanticLogger::Loggable
22+
include PactBroker::Logging
2323

2424
attr_accessor :configuration
2525

lib/pact_broker/badges/service.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module Badges
1010
module Service
1111

1212
extend self
13-
include SemanticLogger::Loggable
13+
include PactBroker::Logging
1414

1515
SPACE_DASH_UNDERSCORE = /[\s_\-]/
1616
CACHE = {}

lib/pact_broker/certificates/service.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module Service
88

99
extend self
1010
extend PactBroker::Logging
11-
include SemanticLogger::Loggable
11+
include PactBroker::Logging
1212

1313
def cert_store
1414
cert_store = OpenSSL::X509::Store.new

lib/pact_broker/config/load.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module PactBroker
77
module Config
88
class Load
99

10-
include SemanticLogger::Loggable
10+
include PactBroker::Logging
1111

1212
def self.call configuration
1313
new(configuration).call

lib/pact_broker/config/save.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module PactBroker
66
module Config
77
class Save
88

9-
include SemanticLogger::Loggable
9+
include PactBroker::Logging
1010

1111
def self.call configuration, setting_names
1212
new(configuration, setting_names).call

lib/pact_broker/configuration.rb

+10-6
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ def self.reset_configuration
1616
end
1717

1818
class Configuration
19-
include SemanticLogger::Loggable
2019

2120
SAVABLE_SETTING_NAMES = [
2221
:order_versions_by_date,
@@ -44,14 +43,15 @@ class Configuration
4443
attr_accessor :disable_ssl_verification
4544
attr_accessor :base_equality_only_on_content_that_affects_verification_results
4645
attr_reader :api_error_reporters
47-
attr_writer :logger
46+
attr_reader :custom_logger
4847

4948
def initialize
5049
@before_resource_hook = ->(resource){}
5150
@after_resource_hook = ->(resource){}
5251
@authenticate_with_basic_auth = nil
5352
@authorize = nil
5453
@api_error_reporters = []
54+
@semantic_logger = SemanticLogger[Configuration]
5555
end
5656

5757
def self.default_configuration
@@ -83,6 +83,14 @@ def self.default_configuration
8383
config
8484
end
8585

86+
def logger
87+
custom_logger || @semantic_logger
88+
end
89+
90+
def logger= logger
91+
@custom_logger = logger
92+
end
93+
8694
def self.default_html_pact_render
8795
lambda { |pact, options|
8896
require 'pact_broker/api/renderers/html_pact_renderer'
@@ -199,9 +207,5 @@ def parse_space_delimited_string_list_property property_name, property_value
199207
raise ConfigurationError.new("Pact Broker configuration property `#{property_name}` must be a space delimited String or an Array")
200208
end
201209
end
202-
203-
def log_path
204-
log_dir + "/pact_broker.log"
205-
end
206210
end
207211
end

lib/pact_broker/domain/order_versions.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module PactBroker
44
module Domain
55
class OrderVersions
66

7-
include SemanticLogger::Loggable
7+
include PactBroker::Logging
88

99
def self.call new_version
1010
new_version.lock!

lib/pact_broker/domain/webhook_request.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def redact? name
5353

5454
class WebhookRequest
5555

56-
include SemanticLogger::Loggable
56+
include PactBroker::Logging
5757
include PactBroker::Messages
5858
HEADERS_TO_REDACT = [/authorization/i, /token/i]
5959

lib/pact_broker/logging.rb

+25-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,33 @@
22
require 'semantic_logger'
33

44
module PactBroker
5-
65
module Logging
6+
77
def self.included(base)
8-
base.extend(self)
8+
base.extend self
9+
base.extend SemanticLogger::Loggable::ClassMethods
10+
base.class_eval do
11+
# Returns [SemanticLogger::Logger] class level logger
12+
def self.logger
13+
require 'pact_broker/configuration'
14+
@logger ||= PactBroker.configuration.custom_logger || SemanticLogger[self]
15+
end
16+
17+
# Replace instance class level logger
18+
def self.logger=(logger)
19+
@logger = logger
20+
end
21+
22+
# Returns [SemanticLogger::Logger] instance level logger
23+
def logger
24+
@logger ||= self.class.logger
25+
end
26+
27+
# Replace instance level logger
28+
def logger=(logger)
29+
@logger = logger
30+
end
31+
end
932
end
1033

1134
def log_error e, description = nil

lib/pact_broker/matrix/deployment_status_summary.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
module PactBroker
44
module Matrix
55
class DeploymentStatusSummary
6+
include PactBroker::Logging
7+
68
attr_reader :rows, :resolved_selectors, :integrations
79

810
def initialize(rows, resolved_selectors, integrations)
@@ -88,7 +90,7 @@ def resolved_version_for(pacticipant_id)
8890
if resolved_selector
8991
resolved_selector[:pacticipant_version_number]
9092
else
91-
PactBroker.logger.warn "Could not find the resolved version for pacticipant_id #{pacticipant_id} from integrations #{integrations.collect(&:to_s).join(", ")} in resolved selectors #{resolved_selectors.inspect}"
93+
logger.warn "Could not find the resolved version for pacticipant_id #{pacticipant_id} from integrations #{integrations.collect(&:to_s).join(", ")} in resolved selectors #{resolved_selectors.inspect}"
9294
"unresolved version"
9395
end
9496
end

lib/pact_broker/matrix/row.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class Row < Sequel::Model(:matrix)
2424

2525
dataset_module do
2626
include PactBroker::Repositories::Helpers
27-
include SemanticLogger::Loggable
27+
include PactBroker::Logging
2828

2929
def matching_selectors selectors
3030
if selectors.size == 1

lib/pact_broker/pacticipants/service.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Service
1010

1111
extend PactBroker::Repositories
1212
extend PactBroker::Services
13-
extend PactBroker::Logging
13+
include PactBroker::Logging
1414

1515
def self.messages_for_potential_duplicate_pacticipants pacticipant_names, base_url
1616
messages = []

lib/pact_broker/pacts/repository.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ module PactBroker
1717
module Pacts
1818
class Repository
1919

20-
include SemanticLogger::Loggable
20+
include PactBroker::Logging
2121
include PactBroker::Repositories
2222

2323
def create params

lib/pact_broker/pacts/service.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module Service
1111

1212
extend PactBroker::Repositories
1313
extend PactBroker::Services
14-
include SemanticLogger::Loggable
14+
include PactBroker::Logging
1515

1616
def find_latest_pact params
1717
pact_repository.find_latest_pact(params[:consumer_name], params[:provider_name], params[:tag])

lib/pact_broker/verifications/service.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
require 'pact_broker/repositories'
22
require 'pact_broker/api/decorators/verification_decorator'
33
require 'pact_broker/verifications/summary_for_consumer_version'
4+
require 'pact_broker/logging'
45

56
module PactBroker
67

@@ -11,13 +12,14 @@ module Service
1112

1213
extend PactBroker::Repositories
1314
extend PactBroker::Services
15+
include PactBroker::Logging
1416

1517
def next_number
1618
verification_repository.next_number
1719
end
1820

1921
def create next_verification_number, params, pact
20-
PactBroker.logger.info "Creating verification #{next_verification_number} for pact_id=#{pact.id} from params #{params}"
22+
logger.info "Creating verification #{next_verification_number} for pact_id=#{pact.id} from params #{params}"
2123
verification = PactBroker::Domain::Verification.new
2224
provider_version_number = params.fetch('providerApplicationVersion')
2325
PactBroker::Api::Decorators::VerificationDecorator.new(verification).from_hash(params)

lib/pact_broker/versions/repository.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
require 'sequel'
2+
require 'pact_broker/logging'
23
require 'pact_broker/domain/version'
34
require 'pact_broker/tags/repository'
45

56
module PactBroker
67
module Versions
78
class Repository
89

10+
include PactBroker::Logging
911
include PactBroker::Repositories::Helpers
1012

1113
def find_by_pacticipant_id_and_number pacticipant_id, number
@@ -53,7 +55,7 @@ def find_by_pacticipant_name_and_number pacticipant_name, number
5355

5456
# There may be a race condition if two simultaneous requests come in to create the same version
5557
def create args
56-
PactBroker.logger.info "Upserting version #{args[:number]} for pacticipant_id=#{args[:pacticipant_id]}"
58+
logger.info "Upserting version #{args[:number]} for pacticipant_id=#{args[:pacticipant_id]}"
5759
version_params = {
5860
number: args[:number],
5961
pacticipant_id: args[:pacticipant_id],

lib/pact_broker/webhooks/job.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module Webhooks
77
class Job
88

99
include SuckerPunch::Job
10-
include SemanticLogger::Loggable
10+
include PactBroker::Logging
1111
include PactBroker::Logging
1212

1313
def perform data

lib/pact_broker/webhooks/webhook_request_template.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module PactBroker
77
module Webhooks
88
class WebhookRequestTemplate
99

10-
include SemanticLogger::Loggable
10+
include PactBroker::Logging
1111
include PactBroker::Messages
1212
HEADERS_TO_REDACT = [/authorization/i, /token/i]
1313

spec/lib/pact_broker/domain/webhook_spec.rb

+7-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ module Domain
1111
let(:options) { double('options') }
1212
let(:pact) { double('pact') }
1313
let(:verification) { double('verification') }
14+
let(:logger) { double('logger').as_null_object }
15+
16+
before do
17+
allow(webhook).to receive(:logger).and_return(logger)
18+
end
1419

1520
subject(:webhook) { Webhook.new(request: request_template, consumer: consumer, provider: provider) }
1621

@@ -59,8 +64,8 @@ module Domain
5964
end
6065

6166
it "logs before and after" do
62-
allow(PactBroker.logger).to receive(:info)
63-
expect(PactBroker.logger).to receive(:info).with(/Executing/)
67+
allow(logger).to receive(:info)
68+
expect(logger).to receive(:info).with(/Executing/)
6469
execute
6570
end
6671
end

spec/lib/pact_broker/matrix/deployment_status_summary_spec.rb

+8-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66
module PactBroker
77
module Matrix
88
describe DeploymentStatusSummary do
9+
10+
before do
11+
allow(subject).to receive(:logger).and_return(logger)
12+
end
13+
14+
let(:logger) { double('logger').as_null_object }
15+
916
describe ".call" do
1017
let(:rows) { [row_1, row_2] }
1118
let(:row_1) do
@@ -106,7 +113,7 @@ module Matrix
106113
its(:reasons) { is_expected.to eq ["There is no verified pact between Foo (unresolved version) and Baz (4ee06460f10e8207ad904fa9fa6c4842e462ab59)"] }
107114

108115
it "logs a warning" do
109-
expect(PactBroker.logger).to receive(:warn).with(/Could not find the resolved version/)
116+
expect(logger).to receive(:warn).with(/Could not find the resolved version/)
110117
subject.reasons
111118
end
112119
end

spec/lib/pact_broker/pacticipants/service_spec.rb

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@
44
require 'pact_broker/domain/pact'
55

66
module PactBroker
7-
87
module Pacticipants
98
describe Service do
9+
before do
10+
allow(Service).to receive(:logger).and_return(logger)
11+
end
1012

1113
let(:td) { TestDataBuilder.new }
14+
let(:logger) { double('logger').as_null_object }
1215

1316
subject{ Service }
1417

@@ -106,8 +109,7 @@ module Pacticipants
106109
end
107110

108111
it "logs the names" do
109-
allow(PactBroker.logger).to receive(:info)
110-
expect(PactBroker.logger).to receive(:info).with(/pacticipant_name.*Fred, Mary/)
112+
expect(logger).to receive(:info).with(/pacticipant_name.*Fred, Mary/)
111113
subject.find_potential_duplicate_pacticipants pacticipant_name
112114
end
113115
end

spec/lib/pact_broker/verifications/service_spec.rb

+6-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ module PactBroker
55

66
module Verifications
77
describe Service do
8+
before do
9+
allow(Service).to receive(:logger).and_return(logger)
10+
end
11+
12+
let(:logger) { double('logger').as_null_object }
813

914
subject { PactBroker::Verifications::Service }
1015

@@ -18,8 +23,7 @@ module Verifications
1823
let(:create_verification) { subject.create 3, params, pact }
1924

2025
it "logs the creation" do
21-
allow(PactBroker.logger).to receive(:info).and_call_original
22-
expect(PactBroker.logger).to receive(:info).with(/.*verification.*3.*success/)
26+
expect(logger).to receive(:info).with(/.*verification.*3.*success/)
2327
create_verification
2428
end
2529

0 commit comments

Comments
 (0)