ezlog 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a2b7013c5c263e56e4531fc3e1fd0d70d5e9ec4f807babd2a95d3c68a66d365
4
- data.tar.gz: 3684e63ae988f43c40291383e5c62b36e7907d0c3a377022616c70fe08a8550f
3
+ metadata.gz: 1060267c8ecacef2fc5c231f9287f09b4b36e9ad7fc536199e2458eb5f56d275
4
+ data.tar.gz: 4d176d6aeb4192fe42240a2a23e0ac0c1c2f4c15487ac8371a22d8907ea123e6
5
5
  SHA512:
6
- metadata.gz: 9279792e2f20e69fc8594d7034557ba742e708a3140f78ea8439f2c78bf4bd4e303d36215edfd30fc4ca1d9d868f1e61aac1f3fe805145d17e59f6df39d9d913
7
- data.tar.gz: a6400bdc976110d23a3aba7df254314950c326846805601778c192d7a5ceaa37c94a12d414e38654f6627954f92dab51e9017ce864c70dbc064b1d4b491540e1
6
+ metadata.gz: dd779463c0f5a50955f01c7eaf6cf7c90d0668e9c4d9cc49c4b676cff5508f10cfb2e6ed3b28f922f67bd1eab38fc393052ce72ef57a7b69d3daaeb2b62cadac
7
+ data.tar.gz: 29acb94a878f3aaa7f96c1b806aede63473d5b5a288eece64b7b2d7082ef1d56aacfc31c10a70399152d4a4afef1338799a9a24caa5d4b82078fe65726a9548a
@@ -1,3 +1,12 @@
1
+ ### 0.9.0 (2020-05-10)
2
+
3
+ [Full Changelog](https://github.com/emartech/ezlog/compare/v0.8.0...v0.9.0)
4
+
5
+ * Features & enhancements
6
+ * Ezlog now supports [Rails](https://rubyonrails.org/) 6.
7
+ * Added the ability to exclude certain paths from access logging. Use the `exclude_paths` configuration option to
8
+ add paths (strings or regexps) to exclude from your access logs.
9
+
1
10
  ### 0.8.0 (2020-04-07)
2
11
 
3
12
  [Full Changelog](https://github.com/emartech/ezlog/compare/v0.7.1...v0.8.0)
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  Ezlog is intended to be a zero-configuration structured logging setup for pure Ruby or [Ruby on Rails](https://rubyonrails.org/)
7
7
  projects using any (or all) of the following libraries or frameworks:
8
8
 
9
- * [Ruby on Rails](https://rubyonrails.org/)
9
+ * [Ruby on Rails](https://rubyonrails.org/) (5.x and 6.x supported)
10
10
  * [Sidekiq](https://github.com/mperham/sidekiq)
11
11
  * [Sequel](https://sequel.jeremyevans.net/)
12
12
  * [Rack::Timeout](https://github.com/heroku/rack-timeout)
@@ -134,6 +134,12 @@ Using this configuration, Ezlog will only log the `action` parameter under the `
134
134
  all parameters serialized into a single string under the key `params_serialized`. You won't lose any information,
135
135
  but you can make sure that only the relevant parameters of your requests are searchable (and thus protect your logs).
136
136
 
137
+ Should you want to exclude certain paths (e.g. a healthcheck URL) from your access logs, you can use the following option:
138
+
139
+ ```ruby
140
+ config.ezlog.exclude_paths = ['/healthcheck', %r(/monitoring/.*)] # default is empty so everything gets logged
141
+ ```
142
+
137
143
  #### The log level
138
144
 
139
145
  The logger's log level is determined as follows (in order of precedence):
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency "logging", "~> 2.0"
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 2.0"
28
- spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "rake", ">= 12.3.3"
29
29
  spec.add_development_dependency "rspec", "~> 3.0"
30
30
  spec.add_development_dependency "sidekiq", ">= 5.0"
31
31
  spec.add_development_dependency "sequel", "~> 5.0"
@@ -3,10 +3,10 @@ module Ezlog
3
3
  class AccessLog
4
4
  include LogContextHelper
5
5
 
6
- def initialize(app, logger, whitelisted_params)
6
+ def initialize(app, logger, config)
7
7
  @app = app
8
8
  @logger = logger
9
- @whitelisted_params = whitelisted_params&.map &:to_s
9
+ @config = config
10
10
  end
11
11
 
12
12
  def call(env)
@@ -29,23 +29,29 @@ module Ezlog
29
29
  end
30
30
 
31
31
  def log_request(request, status)
32
+ return if path_ignored?(request)
33
+
32
34
  message = {
33
35
  message: '%s %s - %i (%s)' % [request.method, request.filtered_path, status, Rack::Utils::HTTP_STATUS_CODES[status]],
34
36
  remote_ip: request.remote_ip,
35
37
  method: request.method,
36
38
  path: request.filtered_path,
37
- params: params_to_log_in(request),
39
+ params: params_to_log(request),
38
40
  response_status_code: status
39
41
  }
40
- message.merge! params_serialized: request.filtered_parameters.inspect if @whitelisted_params
42
+ message.merge! params_serialized: request.filtered_parameters.inspect if @config.log_only_whitelisted_params
41
43
  @logger.info message
42
44
  end
43
45
 
44
- def params_to_log_in(request)
45
- if @whitelisted_params.nil?
46
- request.filtered_parameters
46
+ def path_ignored?(request)
47
+ @config.exclude_paths.any? { |pattern| pattern.match? request.path }
48
+ end
49
+
50
+ def params_to_log(request)
51
+ if @config.log_only_whitelisted_params
52
+ request.filtered_parameters.slice *@config.whitelisted_params&.map(&:to_s)
47
53
  else
48
- request.filtered_parameters.slice *@whitelisted_params
54
+ request.filtered_parameters
49
55
  end
50
56
  end
51
57
  end
@@ -4,6 +4,7 @@ module Ezlog
4
4
  config.ezlog.enable_sequel_logging = false
5
5
  config.ezlog.log_only_whitelisted_params = false
6
6
  config.ezlog.whitelisted_params = [:controller, :action]
7
+ config.ezlog.exclude_paths = []
7
8
 
8
9
  initializer "ezlog.initialize" do
9
10
  require "ezlog/rails/extensions"
@@ -29,16 +30,26 @@ module Ezlog
29
30
  initializer 'ezlog.configure_rails_middlewares' do |app|
30
31
  app.config.middleware.insert_after ::ActionDispatch::RequestId, Ezlog::Rails::RequestLogContext
31
32
  app.config.middleware.delete ::Rails::Rack::Logger
32
- app.config.middleware.insert_before ::ActionDispatch::DebugExceptions, Ezlog::Rails::AccessLog, Ezlog.logger('AccessLog'), whitelisted_params(app)
33
+ app.config.middleware.insert_before ::ActionDispatch::DebugExceptions, Ezlog::Rails::AccessLog, Ezlog.logger('AccessLog'), config.ezlog
33
34
  app.config.middleware.insert_after ::ActionDispatch::DebugExceptions, Ezlog::Rails::LogExceptions, Ezlog.logger('Application')
34
35
  end
35
36
 
36
37
  config.after_initialize do
37
- Ezlog::Rails::LogSubscriber.detach ::ActionController::LogSubscriber
38
- Ezlog::Rails::LogSubscriber.detach ::ActionView::LogSubscriber
39
- if defined? ::ActiveRecord
40
- Ezlog::Rails::LogSubscriber.detach ::ActiveRecord::LogSubscriber
41
- Ezlog::Rails::LogSubscriber.attach Ezlog::Rails::ActiveRecord::LogSubscriber, :active_record
38
+ case ::Rails::VERSION::MAJOR
39
+ when 6
40
+ ::ActionController::LogSubscriber.detach_from :action_controller
41
+ ::ActionView::LogSubscriber.detach_from :action_view
42
+ if defined? ::ActiveRecord
43
+ ::ActiveRecord::LogSubscriber.detach_from :active_record
44
+ Ezlog::Rails::LogSubscriber.attach Ezlog::Rails::ActiveRecord::LogSubscriber, :active_record
45
+ end
46
+ else
47
+ Ezlog::Rails::LogSubscriber.detach ::ActionController::LogSubscriber
48
+ Ezlog::Rails::LogSubscriber.detach ::ActionView::LogSubscriber
49
+ if defined? ::ActiveRecord
50
+ Ezlog::Rails::LogSubscriber.detach ::ActiveRecord::LogSubscriber
51
+ Ezlog::Rails::LogSubscriber.attach Ezlog::Rails::ActiveRecord::LogSubscriber, :active_record
52
+ end
42
53
  end
43
54
  end
44
55
 
@@ -62,9 +73,5 @@ module Ezlog
62
73
  def disable_rack_timeout_logging
63
74
  ::Rack::Timeout::Logger.logger = ::Logger.new(nil)
64
75
  end
65
-
66
- def whitelisted_params(app)
67
- app.config.ezlog.log_only_whitelisted_params ? app.config.ezlog.whitelisted_params : nil
68
- end
69
76
  end
70
77
  end
@@ -1,3 +1,3 @@
1
1
  module Ezlog
2
- VERSION = '0.8.0'
2
+ VERSION = '0.9.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ezlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zoltan Ormandi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-07 00:00:00.000000000 Z
11
+ date: 2020-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logging
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: 12.3.3
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: '10.0'
54
+ version: 12.3.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement