lograge 0.11.2 → 0.12.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b182acc461273304ebb8b5395f65c4eeec4a170639d0b52b0d608a1aa786c03
4
- data.tar.gz: e558ad86b2ae007d24c18d3e15ca2262f61432058508c22feba1c0f63d5ec9be
3
+ metadata.gz: a8dc3fd38bfe24b9f1816ac75fa2d600037fd308b1b355de309d81deae032cd9
4
+ data.tar.gz: f3627f7956278364545987b845a16011463592a78dbf9ae0a409b0c8640b63e4
5
5
  SHA512:
6
- metadata.gz: d9bda7af87bbd4020194aae53d44f29585eadf590d03e490276f025dadbb5bc189d94e9e270437bbb857c0b3da91b9a91f1ba7c833d84d19f835bae7b1960c09
7
- data.tar.gz: 125e9f98472208bc85f5fe2f810ccfae3b26c53511204fc96a808bfdf2fd1fa8046ada14a4c001abf7d59cf5c2b81eb3a5a5020eddc994fb22e8b68eb9b632af
6
+ metadata.gz: 5787201d587cee662987f2aef1db3b971a60b7feec4dc630d509520713e2c746aee9a1249817f0d1bb8752d22eadcf5e79259c73213e75ce7127e49115795b95
7
+ data.tar.gz: 055daf5493eb1a053a8b995d5037973587782c8edf9a48fd0d860f3d5e5c2bb419957c0df8610eda6e0cc26c54bdcf7bd900ba0113c780c4569fb22330e9b00e
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module Formatters
3
5
  class Cee
@@ -1,23 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module Formatters
3
5
  class Graylog2
4
6
  include Lograge::Formatters::Helpers::MethodAndPath
5
7
 
6
8
  def call(data)
7
- # Cloning because we don't want to mess with the original when mutating keys.
8
- data_clone = data.clone
9
-
10
- base = {
11
- short_message: short_message(data_clone)
12
- }
13
-
14
9
  # Add underscore to every key to follow GELF additional field syntax.
15
- data_clone.keys.each do |key|
16
- data_clone[underscore_prefix(key)] = data_clone[key]
17
- data_clone.delete(key)
18
- end
19
-
20
- data_clone.merge(base)
10
+ data.transform_keys { |k| underscore_prefix(k) }.merge(
11
+ short_message: short_message(data)
12
+ )
21
13
  end
22
14
 
23
15
  def underscore_prefix(key)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module Formatters
3
5
  module Helpers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
  module Lograge
3
5
  module Formatters
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module Formatters
3
5
  class KeyValue
@@ -1,24 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'lograge/formatters/key_value'
2
4
 
3
5
  module Lograge
4
6
  module Formatters
5
7
  class L2met < KeyValue
6
- L2MET_FIELDS = [
7
- :method,
8
- :path,
9
- :format,
10
- :source,
11
- :status,
12
- :error,
13
- :duration,
14
- :view,
15
- :db,
16
- :location
8
+ L2MET_FIELDS = %i[
9
+ method
10
+ path
11
+ format
12
+ source
13
+ status
14
+ error
15
+ duration
16
+ view
17
+ db
18
+ location
17
19
  ].freeze
18
20
 
19
- UNWANTED_FIELDS = [
20
- :controller,
21
- :action
21
+ UNWANTED_FIELDS = %i[
22
+ controller
23
+ action
22
24
  ].freeze
23
25
 
24
26
  def call(data)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module Formatters
3
5
  class Lines
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module Formatters
3
5
  class Logstash
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module Formatters
3
5
  class LTSV
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module Formatters
3
5
  class Raw
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module LogSubscribers
3
5
  class ActionCable < Base
4
- %i(perform_action subscribe unsubscribe connect disconnect).each do |method_name|
6
+ %i[perform_action subscribe unsubscribe connect disconnect].each do |method_name|
5
7
  define_method(method_name) do |event|
6
8
  process_main_event(event)
7
9
  end
@@ -11,9 +13,9 @@ module Lograge
11
13
 
12
14
  def initial_data(payload)
13
15
  {
14
- method: {},
15
- path: {},
16
- format: {},
16
+ method: nil,
17
+ path: nil,
18
+ format: nil,
17
19
  params: payload[:data],
18
20
  controller: payload[:channel_class] || payload[:connection_class],
19
21
  action: payload[:action]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
4
  module LogSubscribers
3
5
  class ActionController < Base
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
  require 'action_pack'
5
+ require 'active_support'
3
6
  require 'active_support/core_ext/class/attribute'
4
7
  require 'active_support/log_subscriber'
5
8
  require 'request_store'
@@ -32,8 +35,8 @@ module Lograge
32
35
  data.merge!(custom_options(event))
33
36
  end
34
37
 
35
- %i(initial_data extract_status extract_runtimes
36
- extract_location extract_unpermitted_params).each do |method_name|
38
+ %i[initial_data extract_status extract_runtimes
39
+ extract_location extract_unpermitted_params].each do |method_name|
37
40
  define_method(method_name) { |*_arg| {} }
38
41
  end
39
42
 
@@ -52,9 +55,8 @@ module Lograge
52
55
  0
53
56
  end
54
57
 
55
- def get_error_status_code(exception)
56
- status = ActionDispatch::ExceptionWrapper.rescue_responses[exception]
57
- Rack::Utils.status_code(status)
58
+ def get_error_status_code(exception_class_name)
59
+ ActionDispatch::ExceptionWrapper.status_code_for_exception(exception_class_name)
58
60
  end
59
61
 
60
62
  def custom_options(event)
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support'
1
4
  require 'active_support/ordered_options'
2
5
 
3
6
  module Lograge
@@ -1,22 +1,15 @@
1
- module ActionCable
2
- module Channel
3
- class Base
4
- def subscribe_to_channel
5
- ActiveSupport::Notifications.instrument('subscribe.action_cable', notification_payload('subscribe')) do
6
- run_callbacks :subscribe do
7
- subscribed
8
- end
1
+ # frozen_string_literal: true
9
2
 
10
- reject_subscription if subscription_rejected?
11
- ensure_confirmation_sent
12
- end
3
+ module Lograge
4
+ module ActionCable
5
+ module ChannelInstrumentation
6
+ def subscribe_to_channel
7
+ ActiveSupport::Notifications.instrument('subscribe.action_cable', notification_payload('subscribe')) { super }
13
8
  end
14
9
 
15
10
  def unsubscribe_from_channel
16
11
  ActiveSupport::Notifications.instrument('unsubscribe.action_cable', notification_payload('unsubscribe')) do
17
- run_callbacks :unsubscribe do
18
- unsubscribed
19
- end
12
+ super
20
13
  end
21
14
  end
22
15
 
@@ -28,3 +21,5 @@ module ActionCable
28
21
  end
29
22
  end
30
23
  end
24
+
25
+ ActionCable::Channel::Base.prepend(Lograge::ActionCable::ChannelInstrumentation)
@@ -1,42 +1,21 @@
1
- module ActionCable
2
- module Connection
3
- class Base
4
- # rubocop:disable Metrics/MethodLength
5
- def handle_open
6
- ActiveSupport::Notifications.instrument('connect.action_cable', notification_payload('connect')) do
7
- begin
8
- @protocol = websocket.protocol
9
- connect if respond_to?(:connect)
10
- subscribe_to_internal_channel
11
- send_welcome_message
1
+ # frozen_string_literal: true
12
2
 
13
- message_buffer.process!
14
- server.add_connection(self)
15
- rescue ActionCable::Connection::Authorization::UnauthorizedError
16
- respond_to_invalid_request
17
- end
18
- end
3
+ module Lograge
4
+ module ActionCable
5
+ module ConnectionInstrumentation
6
+ def handle_open
7
+ ActiveSupport::Notifications.instrument('connect.action_cable', notification_payload('connect')) { super }
19
8
  end
20
- # rubocop:enable Metrics/MethodLength
21
9
 
22
10
  def handle_close
23
- ActiveSupport::Notifications.instrument('disconnect.action_cable', notification_payload('disconnect')) do
24
- logger.info finished_request_message if Lograge.lograge_config.keep_original_rails_log
25
-
26
- server.remove_connection(self)
27
-
28
- subscriptions.unsubscribe_from_all
29
- unsubscribe_from_internal_channel
30
-
31
- disconnect if respond_to?(:disconnect)
32
- end
11
+ ActiveSupport::Notifications.instrument('disconnect.action_cable', notification_payload('disconnect')) { super }
33
12
  end
34
13
 
35
- private
36
-
37
14
  def notification_payload(method_name)
38
15
  { connection_class: self.class.name, action: method_name, data: request.params }
39
16
  end
40
17
  end
41
18
  end
42
19
  end
20
+
21
+ ActionCable::Connection::Base.prepend(Lograge::ActionCable::ConnectionInstrumentation)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionCable
2
4
  module Server
3
5
  class Base
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support'
1
4
  require 'active_support/concern'
2
5
  require 'rails/rack/logger'
3
6
 
@@ -9,17 +12,19 @@ module Rails
9
12
  # that say:
10
13
  # Started GET / for 192.168.2.1...
11
14
  class Logger
12
- # Overwrites Rails 3.2 code that logs new requests
15
+ # Overwrites Rails code that logs new requests
13
16
  def call_app(*args)
14
17
  env = args.last
15
- @app.call(env)
18
+ status, headers, body = @app.call(env)
19
+ # needs to have same return type as the Rails builtins being overridden, see https://github.com/roidrage/lograge/pull/333
20
+ # https://github.com/rails/rails/blob/be9d34b9bcb448b265114ebc28bef1a5b5e4c272/railties/lib/rails/rack/logger.rb#L37
21
+ [status, headers, ::Rack::BodyProxy.new(body) {}] # rubocop:disable Lint/EmptyBlock
16
22
  ensure
17
23
  ActiveSupport::LogSubscriber.flush_all!
18
24
  end
19
25
 
20
26
  # Overwrites Rails 3.0/3.1 code that logs new requests
21
- def before_dispatch(_env)
22
- end
27
+ def before_dispatch(_env); end
23
28
  end
24
29
  end
25
30
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/railtie'
2
4
  require 'action_view/log_subscriber'
3
5
  require 'action_controller/log_subscriber'
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'delegate'
4
+
1
5
  module Lograge
2
6
  class SilentLogger < SimpleDelegator
3
- def initialize(logger)
4
- super
5
- end
6
-
7
- %i(debug info warn error fatal unknown).each do |method_name|
7
+ %i[debug info warn error fatal unknown].each do |method_name|
8
+ # rubocop:disable Lint/EmptyBlock
8
9
  define_method(method_name) { |*_args| }
10
+ # rubocop:enable Lint/EmptyBlock
9
11
  end
10
12
  end
11
13
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Lograge
2
- VERSION = '0.11.2'.freeze
4
+ VERSION = '0.12.0'
3
5
  end
data/lib/lograge.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'lograge/version'
2
4
  require 'lograge/formatters/helpers/method_and_path'
3
5
  require 'lograge/formatters/cee'
@@ -14,10 +16,11 @@ require 'lograge/log_subscribers/action_cable'
14
16
  require 'lograge/log_subscribers/action_controller'
15
17
  require 'lograge/silent_logger'
16
18
  require 'lograge/ordered_options'
19
+ require 'active_support'
17
20
  require 'active_support/core_ext/module/attribute_accessors'
18
21
  require 'active_support/core_ext/string/inflections'
19
22
 
20
- # rubocop:disable ModuleLength
23
+ # rubocop:disable Metrics/ModuleLength
21
24
  module Lograge
22
25
  module_function
23
26
 
@@ -117,9 +120,7 @@ module Lograge
117
120
  events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
118
121
  events.each do |event|
119
122
  ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
120
- if listener.instance_variable_get('@delegate') == subscriber
121
- ActiveSupport::Notifications.unsubscribe listener
122
- end
123
+ ActiveSupport::Notifications.unsubscribe listener if listener.instance_variable_get('@delegate') == subscriber
123
124
  end
124
125
  end
125
126
  end
@@ -203,7 +204,7 @@ module Lograge
203
204
  end
204
205
 
205
206
  def rack_cache_hashlike?(app)
206
- app.config.action_dispatch.rack_cache && app.config.action_dispatch.rack_cache.respond_to?(:[]=)
207
+ app.config.action_dispatch.rack_cache&.respond_to?(:[]=)
207
208
  end
208
209
  private_class_method :rack_cache_hashlike?
209
210
 
@@ -223,5 +224,6 @@ module Lograge
223
224
  application.config.lograge
224
225
  end
225
226
  end
227
+ # rubocop:enable Metrics/ModuleLength
226
228
 
227
229
  require 'lograge/railtie' if defined?(Rails)
metadata CHANGED
@@ -1,46 +1,61 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lograge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mathias Meyer
8
8
  - Ben Lovell
9
- autorequire:
9
+ - Michael Bianco
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2019-06-14 00:00:00.000000000 Z
13
+ date: 2022-03-30 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: rspec
16
17
  requirement: !ruby/object:Gem::Requirement
17
18
  requirements:
18
- - - ">="
19
+ - - "~>"
19
20
  - !ruby/object:Gem::Version
20
- version: '0'
21
+ version: '3.1'
21
22
  type: :development
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
- - - ">="
26
+ - - "~>"
26
27
  - !ruby/object:Gem::Version
27
- version: '0'
28
+ version: '3.1'
28
29
  - !ruby/object:Gem::Dependency
29
30
  name: rubocop
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
- - - '='
33
+ - - "~>"
33
34
  - !ruby/object:Gem::Version
34
- version: 0.46.0
35
+ version: '1.23'
35
36
  type: :development
36
37
  prerelease: false
37
38
  version_requirements: !ruby/object:Gem::Requirement
38
39
  requirements:
39
- - - '='
40
+ - - "~>"
40
41
  - !ruby/object:Gem::Version
41
- version: 0.46.0
42
+ version: '1.23'
42
43
  - !ruby/object:Gem::Dependency
43
- name: activesupport
44
+ name: simplecov
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.21'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0.21'
57
+ - !ruby/object:Gem::Dependency
58
+ name: actionpack
44
59
  requirement: !ruby/object:Gem::Requirement
45
60
  requirements:
46
61
  - - ">="
@@ -54,7 +69,7 @@ dependencies:
54
69
  - !ruby/object:Gem::Version
55
70
  version: '4'
56
71
  - !ruby/object:Gem::Dependency
57
- name: actionpack
72
+ name: activesupport
58
73
  requirement: !ruby/object:Gem::Requirement
59
74
  requirements:
60
75
  - - ">="
@@ -99,6 +114,7 @@ description: Tame Rails' multi-line logging into a single line per request
99
114
  email:
100
115
  - meyer@paperplanes.de
101
116
  - benjamin.lovell@gmail.com
117
+ - mike@mikebian.co
102
118
  executables: []
103
119
  extensions: []
104
120
  extra_rdoc_files: []
@@ -129,8 +145,9 @@ files:
129
145
  homepage: https://github.com/roidrage/lograge
130
146
  licenses:
131
147
  - MIT
132
- metadata: {}
133
- post_install_message:
148
+ metadata:
149
+ rubygems_mfa_required: 'true'
150
+ post_install_message:
134
151
  rdoc_options: []
135
152
  require_paths:
136
153
  - lib
@@ -138,16 +155,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
155
  requirements:
139
156
  - - ">="
140
157
  - !ruby/object:Gem::Version
141
- version: '0'
158
+ version: '2.5'
142
159
  required_rubygems_version: !ruby/object:Gem::Requirement
143
160
  requirements:
144
161
  - - ">="
145
162
  - !ruby/object:Gem::Version
146
163
  version: '0'
147
164
  requirements: []
148
- rubyforge_project:
149
- rubygems_version: 2.7.6
150
- signing_key:
165
+ rubygems_version: 3.1.6
166
+ signing_key:
151
167
  specification_version: 4
152
168
  summary: Tame Rails' multi-line logging into a single line per request
153
169
  test_files: []