Skip to content

Commit bcb5f8d

Browse files
committed
Merge remote-tracking branch 'origin/master' into update-log-error
2 parents c1cf1d5 + ae2de00 commit bcb5f8d

File tree

12 files changed

+118
-70
lines changed

12 files changed

+118
-70
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- rails: 5.2
2121
ruby: 2.6
2222
- rails: 5.2
23-
ruby: jruby
23+
ruby: jruby-9.3
2424

2525
- rails: "6.0"
2626
ruby: 2.6
@@ -35,19 +35,20 @@ jobs:
3535
ruby: jruby
3636

3737
- rails: "7.0"
38-
ruby: 3.1
39-
- rails: "6.1"
40-
ruby: jruby
41-
38+
ruby: "3.0"
4239
- rails: "7.0"
4340
ruby: 3.1
41+
- rails: "7.0"
42+
ruby: 3.2
43+
- rails: "7.0"
44+
ruby: jruby
4445

4546
env:
4647
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.gemfile
4748
DISPLAY: ":99.0"
4849

4950
steps:
50-
- uses: actions/checkout@v2
51+
- uses: actions/checkout@v3
5152
- name: Set up Ruby
5253
uses: ruby/setup-ruby@v1
5354
with:

Appraisals

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ appraise "rails_7.0" do
2828
gem "thread_safe", "~> 0.3.6"
2929

3030
gem "rails", "~> 7.0.0"
31-
gem "activerecord-jdbcsqlite3-adapter", "~> 61.0", platform: :jruby
31+
gem "activerecord-jdbcsqlite3-adapter", "~> 70.0", platform: :jruby
3232
gem "sqlite3", "~> 1.4.0", platform: :ruby
3333
end

Gemfile

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,8 @@ gem "minitest"
1111
gem "minitest-rails"
1212
gem "rake"
1313
gem "sprockets", "< 4.0"
14-
gem "semantic_logger", github: "reidmorrison/semantic_logger"
1514

16-
gem "rails", "~> 6.1.0"
15+
gem "rails", "~> 7.0.0"
1716
gem "sqlite3", "~> 1.4.0", platform: :ruby
1817

19-
group :development do
20-
gem "rubocop"
21-
end
18+
gem "rubocop"

gemfiles/rails_7.0.gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ gem "semantic_logger", github: "reidmorrison/semantic_logger"
1414
gem "rails", "~> 7.0.0"
1515
gem "sqlite3", "~> 1.4.0", platform: :ruby
1616
gem "thread_safe", "~> 0.3.6"
17-
gem "activerecord-jdbcsqlite3-adapter", "~> 61.0", platform: :jruby
17+
gem "activerecord-jdbcsqlite3-adapter", "~> 70.0", platform: :jruby
1818

1919
group :development do
2020
gem "rubocop"

lib/rails_semantic_logger/action_controller/log_subscriber.rb

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,22 @@ def process_action(event)
1414

1515
# Unused, but needed for Devise 401 status code monkey patch to still work.
1616
::ActionController::Base.log_process_action(payload)
17+
18+
params = payload[:params]
1719

18-
# According to PR https://github.com/reidmorrison/rails_semantic_logger/pull/37/files
19-
# payload[:params] is not always a Hash.
20-
payload[:params] = payload[:params].to_unsafe_h unless payload[:params].is_a?(Hash)
21-
payload[:params] = payload[:params].except(*INTERNAL_PARAMS)
22-
payload.delete(:params) if payload[:params].empty?
20+
if params.kind_of?(Hash) || params.kind_of?(::ActionController::Parameters)
21+
# According to PR https://github.com/reidmorrison/rails_semantic_logger/pull/37/files
22+
# params is not always a Hash.
23+
payload[:params] = params.to_unsafe_h unless params.is_a?(Hash)
24+
payload[:params] = params.except(*INTERNAL_PARAMS)
25+
26+
if payload[:params].empty?
27+
payload.delete(:params)
28+
elsif params["file"]
29+
# When logging to JSON the entire tempfile is logged, so convert it to a string.
30+
payload[:params]["file"] = params["file"].inspect
31+
end
32+
end
2333

2434
format = payload[:format]
2535
payload[:format] = format.to_s.upcase if format.is_a?(Symbol)
@@ -48,12 +58,6 @@ def process_action(event)
4858
payload.delete(:request)
4959
payload.delete(:response)
5060

51-
params = payload[:params]
52-
if params
53-
# When logging to JSON the entire tempfile is logged, so convert it to a string.
54-
params["file"] = params["file"].inspect if params["file"]
55-
end
56-
5761
{
5862
message: "Completed ##{payload[:action]}",
5963
duration: event.duration,

lib/rails_semantic_logger/action_mailer/log_subscriber.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ def deliver(event)
99
message_id = event.payload[:message_id]
1010
duration = event.duration.round(1)
1111
if ex
12-
log_with_formatter event: event, log_duration: true, level: :error do |fmt|
12+
log_with_formatter event: event, log_duration: true, level: :error do |fmt|
1313
{
1414
message: "Error delivering mail #{message_id} (#{duration}ms)",
1515
exception: ex
1616
}
1717
end
1818
else
1919
message = begin
20-
if event.payload[:perform_deliveries]
20+
if event.payload[:perform_deliveries]
2121
"Delivered mail #{message_id} (#{duration}ms)"
2222
else
2323
"Skipped delivery of mail #{message_id} as `perform_deliveries` is false"

lib/rails_semantic_logger/engine.rb

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
require "rails"
2-
require "action_controller/log_subscriber"
3-
require "action_view/log_subscriber"
4-
require "action_mailer/log_subscriber"
52
require "rails_semantic_logger/options"
63

74
module RailsSemanticLogger
@@ -111,7 +108,14 @@ class Engine < ::Rails::Engine
111108
Resque.logger = SemanticLogger[Resque] if defined?(Resque) && Resque.respond_to?(:logger=)
112109

113110
# Replace the Sidekiq logger
114-
Sidekiq.logger = SemanticLogger[Sidekiq] if defined?(Sidekiq) && Sidekiq.respond_to?(:logger=)
111+
if defined?(Sidekiq)
112+
if Sidekiq.respond_to?(:logger=)
113+
Sidekiq.logger = SemanticLogger[Sidekiq]
114+
elsif Sidekiq::VERSION[0..1] == '7.'
115+
method = Sidekiq.server? ? :configure_server : :configure_client
116+
Sidekiq.public_send(method) { |cfg| cfg.logger = SemanticLogger[Sidekiq] }
117+
end
118+
end
115119

116120
# Replace the Sidetiq logger
117121
Sidetiq.logger = SemanticLogger[Sidetiq] if defined?(Sidetiq) && Sidetiq.respond_to?(:logger=)
@@ -186,26 +190,38 @@ class Engine < ::Rails::Engine
186190
end
187191

188192
# Action View
189-
RailsSemanticLogger::ActionView::LogSubscriber.rendered_log_level = :info if config.rails_semantic_logger.rendered
190-
RailsSemanticLogger.swap_subscriber(
191-
::ActionView::LogSubscriber,
192-
RailsSemanticLogger::ActionView::LogSubscriber,
193-
:action_view
194-
)
193+
if defined?(::ActionView)
194+
require "action_view/log_subscriber"
195+
196+
RailsSemanticLogger::ActionView::LogSubscriber.rendered_log_level = :info if config.rails_semantic_logger.rendered
197+
RailsSemanticLogger.swap_subscriber(
198+
::ActionView::LogSubscriber,
199+
RailsSemanticLogger::ActionView::LogSubscriber,
200+
:action_view
201+
)
202+
end
195203

196204
# Action Controller
197-
RailsSemanticLogger.swap_subscriber(
198-
::ActionController::LogSubscriber,
199-
RailsSemanticLogger::ActionController::LogSubscriber,
200-
:action_controller
201-
)
205+
if defined?(::ActionController)
206+
require "action_controller/log_subscriber"
207+
208+
RailsSemanticLogger.swap_subscriber(
209+
::ActionController::LogSubscriber,
210+
RailsSemanticLogger::ActionController::LogSubscriber,
211+
:action_controller
212+
)
213+
end
202214

203215
# Action Mailer
204-
RailsSemanticLogger.swap_subscriber(
205-
::ActionMailer::LogSubscriber,
206-
RailsSemanticLogger::ActionMailer::LogSubscriber,
207-
:action_mailer
208-
)
216+
if defined?(::ActionMailer)
217+
require "action_mailer/log_subscriber"
218+
219+
RailsSemanticLogger.swap_subscriber(
220+
::ActionMailer::LogSubscriber,
221+
RailsSemanticLogger::ActionMailer::LogSubscriber,
222+
:action_mailer
223+
)
224+
end
209225
end
210226

211227
#

lib/rails_semantic_logger/rack/logger.rb

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,18 @@ def call(env)
3535
@started_request_log_level = :debug
3636

3737
def call_app(request, env)
38-
instrumenter = ActiveSupport::Notifications.instrumenter
39-
instrumenter.start "request.action_dispatch", request: request
38+
instrumenter = ActiveSupport::Notifications.instrumenter
39+
instrumenter_state = instrumenter.start "request.action_dispatch", request: request
40+
instrumenter_finish = -> () {
41+
instrumenter.finish_with_state(instrumenter_state, "request.action_dispatch", request: request)
42+
}
4043

4144
logger.send(self.class.started_request_log_level) { started_request_message(request) }
42-
4345
status, headers, body = @app.call(env)
44-
body = ::Rack::BodyProxy.new(body) { finish(request) }
46+
body = ::Rack::BodyProxy.new(body, &instrumenter_finish)
4547
[status, headers, body]
4648
rescue Exception
47-
finish(request)
49+
instrumenter_finish.call
4850
raise
4951
end
5052

@@ -90,11 +92,6 @@ def compute_named_tags(request)
9092
tagged
9193
end
9294

93-
def finish(request)
94-
instrumenter = ActiveSupport::Notifications.instrumenter
95-
instrumenter.finish "request.action_dispatch", request: request
96-
end
97-
9895
def logger
9996
self.class.logger
10097
end

lib/rails_semantic_logger/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module RailsSemanticLogger
2-
VERSION = "4.11.0".freeze
2+
VERSION = "4.12.0".freeze
33
end

rails_semantic_logger.gemspec

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,23 @@ $LOAD_PATH.push File.expand_path("lib", __dir__)
44
require "rails_semantic_logger/version"
55

66
# Describe your gem and declare its dependencies:
7-
Gem::Specification.new do |spec|
8-
spec.name = "rails_semantic_logger"
9-
spec.version = RailsSemanticLogger::VERSION
10-
spec.platform = Gem::Platform::RUBY
11-
spec.authors = ["Reid Morrison"]
12-
spec.homepage = "https://logger.rocketjob.io"
13-
spec.summary = "Feature rich logging framework that replaces the Rails logger."
14-
spec.files = Dir["lib/**/*", "LICENSE.txt", "Rakefile", "README.md"]
15-
spec.license = "Apache-2.0"
16-
spec.required_ruby_version = ">= 2.5"
17-
spec.add_dependency "rack"
18-
spec.add_dependency "railties", ">= 5.1"
19-
spec.add_dependency "semantic_logger", "~> 4.9"
7+
Gem::Specification.new do |s|
8+
s.name = "rails_semantic_logger"
9+
s.version = RailsSemanticLogger::VERSION
10+
s.platform = Gem::Platform::RUBY
11+
s.authors = ["Reid Morrison"]
12+
s.homepage = "https://logger.rocketjob.io"
13+
s.summary = "Feature rich logging framework that replaces the Rails logger."
14+
s.files = Dir["lib/**/*", "LICENSE.txt", "Rakefile", "README.md"]
15+
s.license = "Apache-2.0"
16+
s.required_ruby_version = ">= 2.5"
17+
s.add_dependency "rack"
18+
s.add_dependency "railties", ">= 5.1"
19+
s.add_dependency "semantic_logger", "~> 4.13"
20+
s.metadata = {
21+
"bug_tracker_uri" => "https://github.com/reidmorrison/rails_semantic_logger/issues",
22+
"documentation_uri" => "https://logger.rocketjob.io",
23+
"source_code_uri" => "https://github.com/reidmorrison/rails_semantic_logger/tree/#{RailsSemanticLogger::VERSION}",
24+
"rubygems_mfa_required" => "true"
25+
}
2026
end

0 commit comments

Comments
 (0)