lograge 0.11.2 → 0.14.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/LICENSE.txt +1 -1
- data/lib/lograge/formatters/cee.rb +2 -0
- data/lib/lograge/formatters/graylog2.rb +5 -13
- data/lib/lograge/formatters/helpers/method_and_path.rb +2 -0
- data/lib/lograge/formatters/json.rb +2 -0
- data/lib/lograge/formatters/key_value.rb +2 -0
- data/lib/lograge/formatters/key_value_deep.rb +42 -0
- data/lib/lograge/formatters/l2met.rb +16 -14
- data/lib/lograge/formatters/lines.rb +2 -0
- data/lib/lograge/formatters/logstash.rb +2 -0
- data/lib/lograge/formatters/ltsv.rb +2 -0
- data/lib/lograge/formatters/raw.rb +2 -0
- data/lib/lograge/log_subscribers/action_cable.rb +6 -4
- data/lib/lograge/log_subscribers/action_controller.rb +2 -0
- data/lib/lograge/log_subscribers/base.rb +16 -5
- data/lib/lograge/ordered_options.rb +3 -0
- data/lib/lograge/rails_ext/action_cable/channel/base.rb +9 -14
- data/lib/lograge/rails_ext/action_cable/connection/base.rb +9 -30
- data/lib/lograge/rails_ext/action_cable/server/base.rb +2 -0
- data/lib/lograge/rails_ext/rack/logger.rb +9 -4
- data/lib/lograge/railtie.rb +6 -0
- data/lib/lograge/silent_logger.rb +7 -5
- data/lib/lograge/version.rb +3 -1
- data/lib/lograge.rb +25 -7
- metadata +37 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d989dce1202da74220c6ac7926c3ef413502644e6f456589a334278ea357a4d
|
4
|
+
data.tar.gz: be68c46645948d5cc157a475b8820f50453fecaf9cc5e0f23bc842ec432eaa48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 273878d74ebdf36f2e703f6c4f0c70e6e17633f13dfc82bc7297ee5b209bb640a09da601768d16d4ca839bb22dfad7f0b8ee832676e4d94d4a96a90b1b5bfadc
|
7
|
+
data.tar.gz: c8503e3b547652a44076a858d0d566b1c75a273ef3efc6357398f7d5c41be7b656cf09687f96c1fe2437d16e4d8c8a657bfb7665055dab16e3a05230adf80e40
|
data/LICENSE.txt
CHANGED
@@ -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
|
-
|
16
|
-
|
17
|
-
|
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)
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lograge
|
4
|
+
module Formatters
|
5
|
+
class KeyValueDeep < KeyValue
|
6
|
+
def call(data)
|
7
|
+
super flatten_keys(data)
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def flatten_keys(data, prefix = '')
|
13
|
+
return flatten_object(data, prefix) if [Hash, Array].include? data.class
|
14
|
+
|
15
|
+
data
|
16
|
+
end
|
17
|
+
|
18
|
+
def flatten_object(data, prefix)
|
19
|
+
result = {}
|
20
|
+
loop_on_object(data) do |key, value|
|
21
|
+
key = "#{prefix}_#{key}" unless prefix.empty?
|
22
|
+
if [Hash, Array].include? value.class
|
23
|
+
result.merge!(flatten_keys(value, key))
|
24
|
+
else
|
25
|
+
result[key] = value
|
26
|
+
end
|
27
|
+
end
|
28
|
+
result
|
29
|
+
end
|
30
|
+
|
31
|
+
def loop_on_object(data, &block)
|
32
|
+
if data.instance_of? Array
|
33
|
+
data.each_with_index do |value, index|
|
34
|
+
yield index, value
|
35
|
+
end
|
36
|
+
return
|
37
|
+
end
|
38
|
+
data.each(&block)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -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
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
21
|
-
|
21
|
+
UNWANTED_FIELDS = %i[
|
22
|
+
controller
|
23
|
+
action
|
22
24
|
].freeze
|
23
25
|
|
24
26
|
def call(data)
|
@@ -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
|
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,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'
|
@@ -26,14 +29,15 @@ module Lograge
|
|
26
29
|
def extract_request(event, payload)
|
27
30
|
data = initial_data(payload)
|
28
31
|
data.merge!(extract_status(payload))
|
32
|
+
data.merge!(extract_allocations(event))
|
29
33
|
data.merge!(extract_runtimes(event, payload))
|
30
34
|
data.merge!(extract_location)
|
31
35
|
data.merge!(extract_unpermitted_params)
|
32
36
|
data.merge!(custom_options(event))
|
33
37
|
end
|
34
38
|
|
35
|
-
%i
|
36
|
-
extract_location extract_unpermitted_params
|
39
|
+
%i[initial_data extract_status extract_runtimes
|
40
|
+
extract_location extract_unpermitted_params].each do |method_name|
|
37
41
|
define_method(method_name) { |*_arg| {} }
|
38
42
|
end
|
39
43
|
|
@@ -52,9 +56,16 @@ module Lograge
|
|
52
56
|
0
|
53
57
|
end
|
54
58
|
|
55
|
-
def get_error_status_code(
|
56
|
-
|
57
|
-
|
59
|
+
def get_error_status_code(exception_class_name)
|
60
|
+
ActionDispatch::ExceptionWrapper.status_code_for_exception(exception_class_name)
|
61
|
+
end
|
62
|
+
|
63
|
+
def extract_allocations(event)
|
64
|
+
if (allocations = (event.respond_to?(:allocations) && event.allocations))
|
65
|
+
{ allocations: allocations }
|
66
|
+
else
|
67
|
+
{}
|
68
|
+
end
|
58
69
|
end
|
59
70
|
|
60
71
|
def custom_options(event)
|
@@ -1,22 +1,15 @@
|
|
1
|
-
|
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
|
-
|
11
|
-
|
12
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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'))
|
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,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
|
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
|
data/lib/lograge/railtie.rb
CHANGED
@@ -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'
|
@@ -7,6 +9,10 @@ module Lograge
|
|
7
9
|
config.lograge = Lograge::OrderedOptions.new
|
8
10
|
config.lograge.enabled = false
|
9
11
|
|
12
|
+
initializer :deprecator do |app|
|
13
|
+
app.deprecators[:lograge] = Lograge.deprecator if app.respond_to?(:deprecators)
|
14
|
+
end
|
15
|
+
|
10
16
|
config.after_initialize do |app|
|
11
17
|
Lograge.setup(app) if app.config.lograge.enabled
|
12
18
|
end
|
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'delegate'
|
4
|
+
|
1
5
|
module Lograge
|
2
6
|
class SilentLogger < SimpleDelegator
|
3
|
-
|
4
|
-
|
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
|
data/lib/lograge/version.rb
CHANGED
data/lib/lograge.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
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'
|
4
6
|
require 'lograge/formatters/json'
|
5
7
|
require 'lograge/formatters/graylog2'
|
6
8
|
require 'lograge/formatters/key_value'
|
9
|
+
require 'lograge/formatters/key_value_deep'
|
7
10
|
require 'lograge/formatters/l2met'
|
8
11
|
require 'lograge/formatters/lines'
|
9
12
|
require 'lograge/formatters/logstash'
|
@@ -14,10 +17,11 @@ require 'lograge/log_subscribers/action_cable'
|
|
14
17
|
require 'lograge/log_subscribers/action_controller'
|
15
18
|
require 'lograge/silent_logger'
|
16
19
|
require 'lograge/ordered_options'
|
20
|
+
require 'active_support'
|
17
21
|
require 'active_support/core_ext/module/attribute_accessors'
|
18
22
|
require 'active_support/core_ext/string/inflections'
|
19
23
|
|
20
|
-
# rubocop:disable ModuleLength
|
24
|
+
# rubocop:disable Metrics/ModuleLength
|
21
25
|
module Lograge
|
22
26
|
module_function
|
23
27
|
|
@@ -116,10 +120,8 @@ module Lograge
|
|
116
120
|
def unsubscribe(component, subscriber)
|
117
121
|
events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
|
118
122
|
events.each do |event|
|
119
|
-
|
120
|
-
if listener.instance_variable_get('@delegate') == subscriber
|
121
|
-
ActiveSupport::Notifications.unsubscribe listener
|
122
|
-
end
|
123
|
+
Lograge.notification_listeners_for("#{event}.#{component}").each do |listener|
|
124
|
+
ActiveSupport::Notifications.unsubscribe listener if listener.instance_variable_get('@delegate') == subscriber
|
123
125
|
end
|
124
126
|
end
|
125
127
|
end
|
@@ -203,7 +205,7 @@ module Lograge
|
|
203
205
|
end
|
204
206
|
|
205
207
|
def rack_cache_hashlike?(app)
|
206
|
-
app.config.action_dispatch.rack_cache
|
208
|
+
app.config.action_dispatch.rack_cache&.respond_to?(:[]=)
|
207
209
|
end
|
208
210
|
private_class_method :rack_cache_hashlike?
|
209
211
|
|
@@ -214,7 +216,7 @@ module Lograge
|
|
214
216
|
|
215
217
|
legacy_log_format = lograge_config.log_format
|
216
218
|
warning = 'config.lograge.log_format is deprecated. Use config.lograge.formatter instead.'
|
217
|
-
|
219
|
+
deprecator.warn(warning, caller)
|
218
220
|
legacy_log_format = :key_value if legacy_log_format == :lograge
|
219
221
|
lograge_config.formatter = "Lograge::Formatters::#{legacy_log_format.to_s.classify}".constantize.new
|
220
222
|
end
|
@@ -222,6 +224,22 @@ module Lograge
|
|
222
224
|
def lograge_config
|
223
225
|
application.config.lograge
|
224
226
|
end
|
227
|
+
|
228
|
+
def deprecator
|
229
|
+
@deprecator ||= ActiveSupport::Deprecation.new('1.0', 'Lograge')
|
230
|
+
end
|
231
|
+
|
232
|
+
if ::ActiveSupport::VERSION::MAJOR >= 8 ||
|
233
|
+
(::ActiveSupport::VERSION::MAJOR >= 7 && ::ActiveSupport::VERSION::MINOR >= 1)
|
234
|
+
def notification_listeners_for(name)
|
235
|
+
ActiveSupport::Notifications.notifier.all_listeners_for(name)
|
236
|
+
end
|
237
|
+
else
|
238
|
+
def notification_listeners_for(name)
|
239
|
+
ActiveSupport::Notifications.notifier.listeners_for(name)
|
240
|
+
end
|
241
|
+
end
|
225
242
|
end
|
243
|
+
# rubocop:enable Metrics/ModuleLength
|
226
244
|
|
227
245
|
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.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mathias Meyer
|
8
8
|
- Ben Lovell
|
9
|
-
|
9
|
+
- Michael Bianco
|
10
|
+
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2023-10-10 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: '
|
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: '
|
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:
|
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:
|
42
|
+
version: '1.23'
|
42
43
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
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:
|
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: []
|
@@ -110,6 +126,7 @@ files:
|
|
110
126
|
- lib/lograge/formatters/helpers/method_and_path.rb
|
111
127
|
- lib/lograge/formatters/json.rb
|
112
128
|
- lib/lograge/formatters/key_value.rb
|
129
|
+
- lib/lograge/formatters/key_value_deep.rb
|
113
130
|
- lib/lograge/formatters/l2met.rb
|
114
131
|
- lib/lograge/formatters/lines.rb
|
115
132
|
- lib/lograge/formatters/logstash.rb
|
@@ -129,8 +146,10 @@ files:
|
|
129
146
|
homepage: https://github.com/roidrage/lograge
|
130
147
|
licenses:
|
131
148
|
- MIT
|
132
|
-
metadata:
|
133
|
-
|
149
|
+
metadata:
|
150
|
+
rubygems_mfa_required: 'true'
|
151
|
+
changelog_uri: https://github.com/roidrage/lograge/blob/master/CHANGELOG.md
|
152
|
+
post_install_message:
|
134
153
|
rdoc_options: []
|
135
154
|
require_paths:
|
136
155
|
- lib
|
@@ -138,16 +157,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
157
|
requirements:
|
139
158
|
- - ">="
|
140
159
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
160
|
+
version: '2.5'
|
142
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
162
|
requirements:
|
144
163
|
- - ">="
|
145
164
|
- !ruby/object:Gem::Version
|
146
165
|
version: '0'
|
147
166
|
requirements: []
|
148
|
-
|
149
|
-
|
150
|
-
signing_key:
|
167
|
+
rubygems_version: 3.4.10
|
168
|
+
signing_key:
|
151
169
|
specification_version: 4
|
152
170
|
summary: Tame Rails' multi-line logging into a single line per request
|
153
171
|
test_files: []
|