epilog 0.2.0 → 0.3.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: c73f8fcac8b47000824334dce31d8b781aa5e730201f2e67816c4c395cbe3966
4
- data.tar.gz: 7f45a7801cb9a815cb576c39de3fb49c09f6b928e7cc2f2b1b50435df548d0e1
3
+ metadata.gz: ab9c7483e1069a23f488152643f2bfb8bd2598956314b8735ad220acec8c4472
4
+ data.tar.gz: 80e15c598d75805161137278ec98ed3a134526e006a9c26a7e6f1dcbb2c4025d
5
5
  SHA512:
6
- metadata.gz: ff73c27fe2100ffc880d689196fc4deed995c3e2978f4d01412bdd63ec7b73de3e11903af43570a0ca29a5040fec275d6a4fad0cbfdf2d0d41bd01da11469045
7
- data.tar.gz: 34bb7195d88534537637e43a729314ba6439f3e40a4c150c33c46c0bb0aa41e9bf544e0f0d47e10cff534c7e71877b53206b5f928c412e9337da471846a34b75
6
+ metadata.gz: 107b41212249b6abf84deb5a13460f4cfe3ee7e510c311b4bc1907528947fc85ef5fa35d030c2e79607583584ecbc6d4466d3b91ff12992c3fc202e55a5a49ab
7
+ data.tar.gz: b2c35471c0b4241faeba4551716f9c4393ccdf717ff411c7d6f4f414e4a6949d0f2a3aa93347ddaf244ea4096eea3ba4cf04b6dd47867a8eb50a3aa48c6bbc66
@@ -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/IndentArray:
14
+ Layout/IndentFirstArgument:
12
15
  EnforcedStyle: consistent
13
16
 
14
- Layout/IndentHash:
17
+ Layout/IndentFirstArrayElement:
15
18
  EnforcedStyle: consistent
16
19
 
17
- Style/Documentation:
18
- Enabled: false
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
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ ## 0.3
4
+
5
+ - Update development dependencies [#1](https://github.com/machinima/epilog/pull/1)
6
+ - Allow controllers to add context to logs [#2](https://github.com/machinima/epilog/pull/2)
7
+ - Fix removing Rails default parameters when filter_parameters are set [#4](https://github.com/machinima/epilog/pull/4)
8
+ - Add a filter using Rails filter_parameters [#3](https://github.com/machinima/epilog/pull/3)
9
+ - Change action view logs to DEBUG [#5](https://github.com/machinima/epilog/pull/5)
10
+ - Filter all request data using filter_parameters [#6](https://github.com/machinima/epilog/pull/6)
11
+
12
+ ## 0.2
13
+
14
+ Initial public release
@@ -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', '~> 1.12'
23
- spec.add_development_dependency 'byebug', '~> 9.0'
24
- spec.add_development_dependency 'combustion', '~> 1.0.0'
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', '~> 10.0'
27
- spec.add_development_dependency 'redcarpet', '~> 3.4'
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', '~> 0.61'
31
- spec.add_development_dependency 'simplecov', '~> 0.12'
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
@@ -2,3 +2,4 @@
2
2
 
3
3
  require 'epilog/filter/hash_key'
4
4
  require 'epilog/filter/blacklist'
5
+ require 'epilog/filter/filter_parameters'
@@ -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
@@ -17,13 +17,13 @@ module Epilog
17
17
 
18
18
  def process_request(event)
19
19
  info do
20
- {
20
+ event.payload[:context].merge(
21
21
  message: response_string(event),
22
22
  request: short_request_hash(event),
23
23
  response: response_hash(event),
24
24
  metrics: process_metrics(event.payload[:metrics]
25
25
  .merge(request_runtime: event.duration.round(2)))
26
- }
26
+ )
27
27
  end
28
28
  end
29
29
 
@@ -79,6 +79,8 @@ module Epilog
79
79
 
80
80
  def request_hash(event) # rubocop:disable AbcSize, MethodLength
81
81
  request = event.payload[:request]
82
+ param_filter = request.send(:parameter_filter)
83
+
82
84
  {
83
85
  id: request.uuid,
84
86
  ip: request.remote_ip,
@@ -86,13 +88,15 @@ module Epilog
86
88
  protocol: request.protocol.to_s.gsub('://', ''),
87
89
  method: request.request_method,
88
90
  port: request.port,
89
- path: request.fullpath,
90
- query: request.query_parameters,
91
- cookies: request.cookies,
92
- headers: request.headers.to_h.keep_if do |key, _value|
93
- key =~ ActionDispatch::Http::Headers::HTTP_HEADER
94
- end,
95
- params: request.filtered_parameters.except(*RAILS_PARAMS),
91
+ path: request.path,
92
+ query: param_filter.filter(request.query_parameters),
93
+ cookies: param_filter.filter(request.cookies),
94
+ headers: param_filter.filter(
95
+ request.headers.to_h.keep_if do |key, _value|
96
+ key =~ ActionDispatch::Http::Headers::HTTP_HEADER
97
+ end
98
+ ),
99
+ params: request.filtered_parameters.except(*rails_params),
96
100
  format: request.format.try(:ref),
97
101
  controller: event.payload[:controller],
98
102
  action: event.payload[:action]
@@ -104,13 +108,13 @@ module Epilog
104
108
  {
105
109
  id: request.uuid,
106
110
  method: request.method,
107
- path: request.fullpath
111
+ path: request.path
108
112
  }
109
113
  end
110
114
 
111
115
  def request_string(event)
112
116
  request = event.payload[:request]
113
- "#{request.request_method} #{request.fullpath}"
117
+ "#{request.request_method} #{request.path}"
114
118
  end
115
119
 
116
120
  def response_hash(event)
@@ -147,6 +151,10 @@ module Epilog
147
151
  obj[key] = value.round(2) if value.is_a?(Numeric)
148
152
  end
149
153
  end
154
+
155
+ def rails_params
156
+ @rails_params ||= RAILS_PARAMS + RAILS_PARAMS.map(&:to_s)
157
+ end
150
158
  end
151
159
  end
152
160
  end
@@ -4,15 +4,15 @@ module Epilog
4
4
  module Rails
5
5
  class ActionViewSubscriber < LogSubscriber
6
6
  def render_template(event)
7
- info { hash(event, 'Rendered template') }
7
+ debug { hash(event, 'Rendered template') }
8
8
  end
9
9
 
10
10
  def render_partial(event)
11
- info { hash(event, 'Rendered partial') }
11
+ debug { hash(event, 'Rendered partial') }
12
12
  end
13
13
 
14
14
  def render_collection(event)
15
- info { hash(event, 'Rendered collection') }
15
+ debug { hash(event, 'Rendered collection') }
16
16
  end
17
17
 
18
18
  private
@@ -10,6 +10,7 @@ module Epilog
10
10
  ensure
11
11
  payload[:response] = response
12
12
  payload[:metrics] = epilog_metrics
13
+ payload[:context] = epilog_context
13
14
  end
14
15
  end
15
16
  end
@@ -39,6 +40,10 @@ 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
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Epilog
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
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.2.0
4
+ version: 0.3.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: 2018-12-18 00:00:00.000000000 Z
11
+ date: 2019-10-08 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: '9.0'
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: '9.0'
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.0.0
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.0.0
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: '10.0'
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: '10.0'
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.4'
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.4'
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.61'
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.61'
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.12'
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.12'
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
+ - CHANGLOG.md
199
220
  - Gemfile
200
221
  - LICENSE.txt
201
222
  - README.md
@@ -212,6 +233,7 @@ files:
212
233
  - lib/epilog.rb
213
234
  - lib/epilog/filter.rb
214
235
  - lib/epilog/filter/blacklist.rb
236
+ - lib/epilog/filter/filter_parameters.rb
215
237
  - lib/epilog/filter/hash_key.rb
216
238
  - lib/epilog/log_formatter.rb
217
239
  - lib/epilog/logger.rb
@@ -251,7 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
251
273
  version: '0'
252
274
  requirements: []
253
275
  rubyforge_project:
254
- rubygems_version: 2.7.8
276
+ rubygems_version: 2.7.7
255
277
  signing_key:
256
278
  specification_version: 4
257
279
  summary: A JSON logger with Rails support