epilog 0.2.0 → 0.6.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/.rubocop.yml +10 -4
- data/CHANGELOG.md +31 -0
- data/epilog.gemspec +9 -8
- data/lib/epilog.rb +1 -0
- data/lib/epilog/context_logging.rb +58 -0
- data/lib/epilog/filter.rb +1 -0
- data/lib/epilog/filter/filter_parameters.rb +26 -0
- data/lib/epilog/log_formatter.rb +3 -0
- data/lib/epilog/logger.rb +2 -0
- data/lib/epilog/mock_logger.rb +18 -3
- data/lib/epilog/rails/action_controller_subscriber.rb +52 -24
- data/lib/epilog/rails/action_view_subscriber.rb +3 -3
- data/lib/epilog/rails/active_job_subscriber.rb +11 -0
- data/lib/epilog/rails/ext/action_controller.rb +9 -1
- data/lib/epilog/rails/log_subscriber.rb +12 -0
- data/lib/epilog/rails/railtie.rb +2 -0
- data/lib/epilog/version.rb +1 -1
- metadata +42 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26a731d5297bcf87056341855af05c6c57b18fbb29115a0dcc3d00b1c2a9086e
|
4
|
+
data.tar.gz: 032c613192e81a8c4b97993b1f42c7d100272c16b1a4457f1df9a9afb54a84b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44373cd845a4114af0b41654265f697c0bc2ab9584342d1b5c40de4a539e1228608ac1d548bf14150c24ddaa6987c272601f402453dac1ff0356a23a65cd8bd8
|
7
|
+
data.tar.gz: e654189bc9d0431e165c0d948f234972171f16c016260ba287e05cf5f268f5802e30fedf02884d5699ff49241548eab5b3d46f7065e836988a37cace563c476e
|
data/.rubocop.yml
CHANGED
@@ -2,24 +2,30 @@
|
|
2
2
|
AllCops:
|
3
3
|
TargetRubyVersion: 2.3
|
4
4
|
|
5
|
+
Layout/AlignArguments:
|
6
|
+
EnforcedStyle: with_fixed_indentation
|
7
|
+
|
5
8
|
Layout/EndAlignment:
|
6
9
|
EnforcedStyleAlignWith: variable
|
7
10
|
|
8
11
|
Layout/AlignParameters:
|
9
12
|
EnforcedStyle: with_fixed_indentation
|
10
13
|
|
11
|
-
Layout/
|
14
|
+
Layout/IndentFirstArgument:
|
12
15
|
EnforcedStyle: consistent
|
13
16
|
|
14
|
-
Layout/
|
17
|
+
Layout/IndentFirstArrayElement:
|
15
18
|
EnforcedStyle: consistent
|
16
19
|
|
17
|
-
|
18
|
-
|
20
|
+
Layout/IndentFirstHashElement:
|
21
|
+
EnforcedStyle: consistent
|
19
22
|
|
20
23
|
Layout/MultilineMethodCallIndentation:
|
21
24
|
EnforcedStyle: indented
|
22
25
|
|
26
|
+
Style/Documentation:
|
27
|
+
Enabled: false
|
28
|
+
|
23
29
|
Style/FrozenStringLiteralComment:
|
24
30
|
Enabled: true
|
25
31
|
EnforcedStyle: always
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 0.6.0
|
4
|
+
|
5
|
+
- Add support for Rails 5 API-only controllers [#17](https://github.com/machinima/epilog/pull/17)
|
6
|
+
|
7
|
+
## 0.5.0
|
8
|
+
|
9
|
+
- Add options to enable/disable start and end logs [#15](https://github.com/machinima/epilog/pull/15)
|
10
|
+
- Fix with_context to use ensure [#16](https://github.com/machinima/epilog/pull/16)
|
11
|
+
|
12
|
+
## 0.4.0
|
13
|
+
|
14
|
+
- Add context support to Logger [#12](https://github.com/machinima/epilog/pull/12)
|
15
|
+
|
16
|
+
## 0.3.1
|
17
|
+
|
18
|
+
- Add context to request log [#10](https://github.com/machinima/epilog/pull/10)
|
19
|
+
|
20
|
+
## 0.3
|
21
|
+
|
22
|
+
- Update development dependencies [#1](https://github.com/machinima/epilog/pull/1)
|
23
|
+
- Allow controllers to add context to logs [#2](https://github.com/machinima/epilog/pull/2)
|
24
|
+
- Fix removing Rails default parameters when filter_parameters are set [#4](https://github.com/machinima/epilog/pull/4)
|
25
|
+
- Add a filter using Rails filter_parameters [#3](https://github.com/machinima/epilog/pull/3)
|
26
|
+
- Change action view logs to DEBUG [#5](https://github.com/machinima/epilog/pull/5)
|
27
|
+
- Filter all request data using filter_parameters [#6](https://github.com/machinima/epilog/pull/6)
|
28
|
+
|
29
|
+
## 0.2
|
30
|
+
|
31
|
+
Initial public release
|
data/epilog.gemspec
CHANGED
@@ -19,16 +19,17 @@ Gem::Specification.new do |spec|
|
|
19
19
|
.reject { |f| f.match(%r{^spec/}) }
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_development_dependency 'bundler', '
|
23
|
-
spec.add_development_dependency 'byebug', '~>
|
24
|
-
spec.add_development_dependency 'combustion', '~> 1.
|
22
|
+
spec.add_development_dependency 'bundler', '>= 1.12'
|
23
|
+
spec.add_development_dependency 'byebug', '~> 11.0'
|
24
|
+
spec.add_development_dependency 'combustion', '~> 1.1.0'
|
25
|
+
spec.add_development_dependency 'irb'
|
25
26
|
spec.add_development_dependency 'rails', '>= 4.2', '< 6'
|
26
|
-
spec.add_development_dependency 'rake', '~>
|
27
|
-
spec.add_development_dependency 'redcarpet', '~> 3.
|
27
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
28
|
+
spec.add_development_dependency 'redcarpet', '~> 3.5'
|
28
29
|
spec.add_development_dependency 'rspec', '~> 3.4'
|
29
30
|
spec.add_development_dependency 'rspec-rails', '~> 3.8.1'
|
30
|
-
spec.add_development_dependency 'rubocop', '
|
31
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
32
|
-
spec.add_development_dependency 'sqlite3', '~> 1.3'
|
31
|
+
spec.add_development_dependency 'rubocop', '0.75'
|
32
|
+
spec.add_development_dependency 'simplecov', '~> 0.17'
|
33
|
+
spec.add_development_dependency 'sqlite3', '~> 1.3', '< 1.4'
|
33
34
|
spec.add_development_dependency 'yard', '~> 0.9.11'
|
34
35
|
end
|
data/lib/epilog.rb
CHANGED
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Epilog
|
4
|
+
module ContextLogger
|
5
|
+
def with_context(context)
|
6
|
+
push_context(context)
|
7
|
+
yield
|
8
|
+
ensure
|
9
|
+
pop_context
|
10
|
+
end
|
11
|
+
|
12
|
+
def push_context(context)
|
13
|
+
formatter.push_context(context)
|
14
|
+
end
|
15
|
+
|
16
|
+
def pop_context
|
17
|
+
formatter.pop_context
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module ContextFormatter
|
22
|
+
def context
|
23
|
+
Thread.current[current_context_key] ||= begin
|
24
|
+
result = {}
|
25
|
+
context_stack.each { |frame| result.merge!(frame) }
|
26
|
+
result
|
27
|
+
end.freeze
|
28
|
+
end
|
29
|
+
|
30
|
+
def push_context(frame)
|
31
|
+
clear_context
|
32
|
+
context_stack.push(frame)
|
33
|
+
end
|
34
|
+
|
35
|
+
def pop_context
|
36
|
+
clear_context
|
37
|
+
context_stack.pop
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def clear_context
|
43
|
+
Thread.current[current_context_key] = nil
|
44
|
+
end
|
45
|
+
|
46
|
+
def context_stack
|
47
|
+
Thread.current[stack_key] ||= []
|
48
|
+
end
|
49
|
+
|
50
|
+
def stack_key
|
51
|
+
@stack_key ||= "epilog_context_stack:#{object_id}"
|
52
|
+
end
|
53
|
+
|
54
|
+
def current_context_key
|
55
|
+
@current_context_key ||= "epilog_context_current:#{object_id}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/epilog/filter.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Epilog
|
4
|
+
module Filter
|
5
|
+
class FilterParameters < Blacklist
|
6
|
+
private
|
7
|
+
|
8
|
+
def filter_parameters
|
9
|
+
return @filter_parameters if @filter_parameters
|
10
|
+
|
11
|
+
filtered = Hash[
|
12
|
+
::Rails.application.config.filter_parameters.map do |p|
|
13
|
+
[p.to_s.downcase, true]
|
14
|
+
end
|
15
|
+
]
|
16
|
+
|
17
|
+
@filter_parameters = filtered if ::Rails.initialized?
|
18
|
+
filtered
|
19
|
+
end
|
20
|
+
|
21
|
+
def key?(key)
|
22
|
+
filter_parameters.key?(key.to_s.downcase)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/epilog/log_formatter.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
module Epilog
|
4
4
|
class Formatter
|
5
|
+
include ContextFormatter
|
6
|
+
|
5
7
|
SEVERITY_MAP = {
|
6
8
|
'FATAL' => 'ALERT',
|
7
9
|
'WARN' => 'WARNING'
|
@@ -18,6 +20,7 @@ module Epilog
|
|
18
20
|
|
19
21
|
def call(severity, time, progname, msg)
|
20
22
|
log = base_log(severity, time, progname)
|
23
|
+
log.merge!(context)
|
21
24
|
log.merge!(message(msg))
|
22
25
|
|
23
26
|
if log[:exception].is_a?(Exception)
|
data/lib/epilog/logger.rb
CHANGED
data/lib/epilog/mock_logger.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
module Epilog
|
4
4
|
class MockLogger < ::Logger
|
5
|
-
def initialize
|
6
|
-
super(nil)
|
5
|
+
def initialize(**options)
|
6
|
+
super(nil, **options)
|
7
7
|
reset
|
8
8
|
end
|
9
9
|
|
@@ -44,6 +44,21 @@ module Epilog
|
|
44
44
|
|
45
45
|
def reset
|
46
46
|
@logs = []
|
47
|
+
@context = []
|
48
|
+
end
|
49
|
+
|
50
|
+
def with_context(context)
|
51
|
+
push_context(context)
|
52
|
+
yield
|
53
|
+
pop_context
|
54
|
+
end
|
55
|
+
|
56
|
+
def push_context(context)
|
57
|
+
@context << context
|
58
|
+
end
|
59
|
+
|
60
|
+
def pop_context
|
61
|
+
@context.pop
|
47
62
|
end
|
48
63
|
|
49
64
|
private
|
@@ -53,7 +68,7 @@ module Epilog
|
|
53
68
|
end
|
54
69
|
|
55
70
|
def write(severity, time, prog, message)
|
56
|
-
@logs << [severity, time, prog, message]
|
71
|
+
@logs << [severity, time, prog, message, @context.dup]
|
57
72
|
end
|
58
73
|
end
|
59
74
|
end
|
@@ -7,24 +7,17 @@ module Epilog
|
|
7
7
|
RAILS_PARAMS = %i[controller action format _method only_path].freeze
|
8
8
|
|
9
9
|
def request_received(event)
|
10
|
-
|
11
|
-
{
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
push_context(
|
11
|
+
{ request: short_request_hash(event) }
|
12
|
+
.merge(event.payload[:context])
|
13
|
+
)
|
14
|
+
|
15
|
+
log_start(event) if config.double_request_logs
|
16
16
|
end
|
17
17
|
|
18
18
|
def process_request(event)
|
19
|
-
|
20
|
-
|
21
|
-
message: response_string(event),
|
22
|
-
request: short_request_hash(event),
|
23
|
-
response: response_hash(event),
|
24
|
-
metrics: process_metrics(event.payload[:metrics]
|
25
|
-
.merge(request_runtime: event.duration.round(2)))
|
26
|
-
}
|
27
|
-
end
|
19
|
+
log_end(event)
|
20
|
+
pop_context
|
28
21
|
end
|
29
22
|
|
30
23
|
def start_processing(*)
|
@@ -77,8 +70,37 @@ module Epilog
|
|
77
70
|
|
78
71
|
private
|
79
72
|
|
73
|
+
def log_start(event)
|
74
|
+
info do
|
75
|
+
{
|
76
|
+
message: "#{request_string(event)} started",
|
77
|
+
request: request_hash(event)
|
78
|
+
}
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def log_end(event) # rubocop:disable MethodLength
|
83
|
+
request = if config.double_request_logs
|
84
|
+
short_request_hash(event)
|
85
|
+
else
|
86
|
+
request_hash(event)
|
87
|
+
end
|
88
|
+
|
89
|
+
info do
|
90
|
+
{
|
91
|
+
message: response_string(event),
|
92
|
+
request: request,
|
93
|
+
response: response_hash(event),
|
94
|
+
metrics: process_metrics(event.payload[:metrics]
|
95
|
+
.merge(request_runtime: event.duration.round(2)))
|
96
|
+
}
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
80
100
|
def request_hash(event) # rubocop:disable AbcSize, MethodLength
|
81
101
|
request = event.payload[:request]
|
102
|
+
param_filter = request.send(:parameter_filter)
|
103
|
+
|
82
104
|
{
|
83
105
|
id: request.uuid,
|
84
106
|
ip: request.remote_ip,
|
@@ -86,13 +108,15 @@ module Epilog
|
|
86
108
|
protocol: request.protocol.to_s.gsub('://', ''),
|
87
109
|
method: request.request_method,
|
88
110
|
port: request.port,
|
89
|
-
path: request.
|
90
|
-
query: request.query_parameters,
|
91
|
-
cookies: request.cookies,
|
92
|
-
headers:
|
93
|
-
key
|
94
|
-
|
95
|
-
|
111
|
+
path: request.path,
|
112
|
+
query: param_filter.filter(request.query_parameters),
|
113
|
+
cookies: param_filter.filter(request.cookies),
|
114
|
+
headers: param_filter.filter(
|
115
|
+
request.headers.to_h.keep_if do |key, _value|
|
116
|
+
key =~ ActionDispatch::Http::Headers::HTTP_HEADER
|
117
|
+
end
|
118
|
+
),
|
119
|
+
params: request.filtered_parameters.except(*rails_params),
|
96
120
|
format: request.format.try(:ref),
|
97
121
|
controller: event.payload[:controller],
|
98
122
|
action: event.payload[:action]
|
@@ -104,13 +128,13 @@ module Epilog
|
|
104
128
|
{
|
105
129
|
id: request.uuid,
|
106
130
|
method: request.method,
|
107
|
-
path: request.
|
131
|
+
path: request.path
|
108
132
|
}
|
109
133
|
end
|
110
134
|
|
111
135
|
def request_string(event)
|
112
136
|
request = event.payload[:request]
|
113
|
-
"#{request.request_method} #{request.
|
137
|
+
"#{request.request_method} #{request.path}"
|
114
138
|
end
|
115
139
|
|
116
140
|
def response_hash(event)
|
@@ -147,6 +171,10 @@ module Epilog
|
|
147
171
|
obj[key] = value.round(2) if value.is_a?(Numeric)
|
148
172
|
end
|
149
173
|
end
|
174
|
+
|
175
|
+
def rails_params
|
176
|
+
@rails_params ||= RAILS_PARAMS + RAILS_PARAMS.map(&:to_s)
|
177
|
+
end
|
150
178
|
end
|
151
179
|
end
|
152
180
|
end
|
@@ -4,15 +4,15 @@ module Epilog
|
|
4
4
|
module Rails
|
5
5
|
class ActionViewSubscriber < LogSubscriber
|
6
6
|
def render_template(event)
|
7
|
-
|
7
|
+
debug { hash(event, 'Rendered template') }
|
8
8
|
end
|
9
9
|
|
10
10
|
def render_partial(event)
|
11
|
-
|
11
|
+
debug { hash(event, 'Rendered partial') }
|
12
12
|
end
|
13
13
|
|
14
14
|
def render_collection(event)
|
15
|
-
|
15
|
+
debug { hash(event, 'Rendered collection') }
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
@@ -12,6 +12,9 @@ module Epilog
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def perform_start(event)
|
15
|
+
push_context(job: short_job_hash(event.payload[:job]))
|
16
|
+
return unless config.double_job_logs
|
17
|
+
|
15
18
|
info { event_hash('Performing job', event) }
|
16
19
|
end
|
17
20
|
|
@@ -23,6 +26,7 @@ module Epilog
|
|
23
26
|
}
|
24
27
|
)
|
25
28
|
end
|
29
|
+
pop_context
|
26
30
|
end
|
27
31
|
|
28
32
|
private
|
@@ -45,6 +49,13 @@ module Epilog
|
|
45
49
|
}
|
46
50
|
end
|
47
51
|
|
52
|
+
def short_job_hash(job)
|
53
|
+
{
|
54
|
+
class: job.class.name,
|
55
|
+
id: job.job_id
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
48
59
|
def format_time(time)
|
49
60
|
Time.at(time).utc.strftime(Epilog::Formatter::DEFAULT_TIME_FORMAT)
|
50
61
|
end
|
@@ -29,7 +29,8 @@ module Epilog
|
|
29
29
|
request: request,
|
30
30
|
response: response,
|
31
31
|
controller: self.class.name,
|
32
|
-
action: action_name
|
32
|
+
action: action_name,
|
33
|
+
context: epilog_context
|
33
34
|
}
|
34
35
|
end
|
35
36
|
|
@@ -39,7 +40,14 @@ module Epilog
|
|
39
40
|
view_runtime: view_runtime
|
40
41
|
}
|
41
42
|
end
|
43
|
+
|
44
|
+
def epilog_context
|
45
|
+
{}
|
46
|
+
end
|
42
47
|
end
|
43
48
|
end
|
44
49
|
|
45
50
|
ActionController::Base.prepend(Epilog::ActionControllerExt)
|
51
|
+
if defined? ActionController::API
|
52
|
+
ActionController::API.prepend(Epilog::ActionControllerExt)
|
53
|
+
end
|
@@ -9,6 +9,18 @@ module Epilog
|
|
9
9
|
super()
|
10
10
|
@logger = logger
|
11
11
|
end
|
12
|
+
|
13
|
+
def push_context(context)
|
14
|
+
@logger.try(:push_context, context)
|
15
|
+
end
|
16
|
+
|
17
|
+
def pop_context
|
18
|
+
@logger.try(:pop_context)
|
19
|
+
end
|
20
|
+
|
21
|
+
def config
|
22
|
+
::Rails.application.config.epilog
|
23
|
+
end
|
12
24
|
end
|
13
25
|
end
|
14
26
|
end
|
data/lib/epilog/rails/railtie.rb
CHANGED
data/lib/epilog/version.rb
CHANGED
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epilog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Howard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.12'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.12'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -30,28 +30,42 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '11.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '11.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: combustion
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.1.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.1.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: irb
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rails
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,28 +92,28 @@ dependencies:
|
|
78
92
|
requirements:
|
79
93
|
- - "~>"
|
80
94
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
95
|
+
version: '13.0'
|
82
96
|
type: :development
|
83
97
|
prerelease: false
|
84
98
|
version_requirements: !ruby/object:Gem::Requirement
|
85
99
|
requirements:
|
86
100
|
- - "~>"
|
87
101
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
102
|
+
version: '13.0'
|
89
103
|
- !ruby/object:Gem::Dependency
|
90
104
|
name: redcarpet
|
91
105
|
requirement: !ruby/object:Gem::Requirement
|
92
106
|
requirements:
|
93
107
|
- - "~>"
|
94
108
|
- !ruby/object:Gem::Version
|
95
|
-
version: '3.
|
109
|
+
version: '3.5'
|
96
110
|
type: :development
|
97
111
|
prerelease: false
|
98
112
|
version_requirements: !ruby/object:Gem::Requirement
|
99
113
|
requirements:
|
100
114
|
- - "~>"
|
101
115
|
- !ruby/object:Gem::Version
|
102
|
-
version: '3.
|
116
|
+
version: '3.5'
|
103
117
|
- !ruby/object:Gem::Dependency
|
104
118
|
name: rspec
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,30 +146,30 @@ dependencies:
|
|
132
146
|
name: rubocop
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|
134
148
|
requirements:
|
135
|
-
- -
|
149
|
+
- - '='
|
136
150
|
- !ruby/object:Gem::Version
|
137
|
-
version: '0.
|
151
|
+
version: '0.75'
|
138
152
|
type: :development
|
139
153
|
prerelease: false
|
140
154
|
version_requirements: !ruby/object:Gem::Requirement
|
141
155
|
requirements:
|
142
|
-
- -
|
156
|
+
- - '='
|
143
157
|
- !ruby/object:Gem::Version
|
144
|
-
version: '0.
|
158
|
+
version: '0.75'
|
145
159
|
- !ruby/object:Gem::Dependency
|
146
160
|
name: simplecov
|
147
161
|
requirement: !ruby/object:Gem::Requirement
|
148
162
|
requirements:
|
149
163
|
- - "~>"
|
150
164
|
- !ruby/object:Gem::Version
|
151
|
-
version: '0.
|
165
|
+
version: '0.17'
|
152
166
|
type: :development
|
153
167
|
prerelease: false
|
154
168
|
version_requirements: !ruby/object:Gem::Requirement
|
155
169
|
requirements:
|
156
170
|
- - "~>"
|
157
171
|
- !ruby/object:Gem::Version
|
158
|
-
version: '0.
|
172
|
+
version: '0.17'
|
159
173
|
- !ruby/object:Gem::Dependency
|
160
174
|
name: sqlite3
|
161
175
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,6 +177,9 @@ dependencies:
|
|
163
177
|
- - "~>"
|
164
178
|
- !ruby/object:Gem::Version
|
165
179
|
version: '1.3'
|
180
|
+
- - "<"
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '1.4'
|
166
183
|
type: :development
|
167
184
|
prerelease: false
|
168
185
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -170,6 +187,9 @@ dependencies:
|
|
170
187
|
- - "~>"
|
171
188
|
- !ruby/object:Gem::Version
|
172
189
|
version: '1.3'
|
190
|
+
- - "<"
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '1.4'
|
173
193
|
- !ruby/object:Gem::Dependency
|
174
194
|
name: yard
|
175
195
|
requirement: !ruby/object:Gem::Requirement
|
@@ -196,6 +216,7 @@ files:
|
|
196
216
|
- ".rubocop.yml"
|
197
217
|
- ".travis.yml"
|
198
218
|
- ".yardopts"
|
219
|
+
- CHANGELOG.md
|
199
220
|
- Gemfile
|
200
221
|
- LICENSE.txt
|
201
222
|
- README.md
|
@@ -210,8 +231,10 @@ files:
|
|
210
231
|
- bin/yri
|
211
232
|
- epilog.gemspec
|
212
233
|
- lib/epilog.rb
|
234
|
+
- lib/epilog/context_logging.rb
|
213
235
|
- lib/epilog/filter.rb
|
214
236
|
- lib/epilog/filter/blacklist.rb
|
237
|
+
- lib/epilog/filter/filter_parameters.rb
|
215
238
|
- lib/epilog/filter/hash_key.rb
|
216
239
|
- lib/epilog/log_formatter.rb
|
217
240
|
- lib/epilog/logger.rb
|
@@ -251,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
251
274
|
version: '0'
|
252
275
|
requirements: []
|
253
276
|
rubyforge_project:
|
254
|
-
rubygems_version: 2.7.
|
277
|
+
rubygems_version: 2.7.7
|
255
278
|
signing_key:
|
256
279
|
specification_version: 4
|
257
280
|
summary: A JSON logger with Rails support
|