sapience 2.9.1 → 2.14

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
  SHA1:
3
- metadata.gz: a5e40be4c3c23734786e06c3be620bab6a2c1a9a
4
- data.tar.gz: 3397ec7107fc0ac63f23809262c7cd793cd43e91
3
+ metadata.gz: 5ef38812e94717d5c17cbc973d7aef79deb1905a
4
+ data.tar.gz: c95f1ae7e46b15e7e9bbbac99ed2bad8705cfc9b
5
5
  SHA512:
6
- metadata.gz: 5def20affb7f31b2ef491d458d1e8095cc54ab2db62ff6ca12016e200f20d91f7104b494702c45084431cc93006f60ef753314817f94ed34e1805a42dfcd677b
7
- data.tar.gz: 15a71d7c1491305fda7a7157bbcd82caf01f6bdc7ca6fa409aa2cca4e2192629f128e223054db957ccb73afddc6a0139233e39e2e8c3485c193706d95b031373
6
+ metadata.gz: 7d4106483c8d8f01f3b8e869b4930f0a7a702702060d84052513a0b3ea8d481ce7df9d4eb4a352c9b9389e5306234726e2ad4ddbac5593cd19f385f9c696c993
7
+ data.tar.gz: ff0ad620ddb060381b8ce51f0579b9dcb8230920fe3bd27b594a83507584f0a74938119f1b344dbbfcd0eeb452f6399ac8ec1c8f0d54ea92be7a9004627ef107
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.4.10
data/.travis.yml CHANGED
@@ -1,27 +1,15 @@
1
1
  sudo: required
2
2
  dist: trusty
3
- language: ruby
3
+ language: minimal
4
4
  cache:
5
- bundler: true
6
5
  directories:
7
6
  - $HOME/docker
8
- - $BUNDLE_PATH
9
- - ./vendor/bundle
10
7
 
11
8
  services:
12
9
  - docker
13
10
 
14
- before_install:
15
- - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
16
- - gem install bundler -v '< 2'
17
-
18
- install: bundle install --jobs 8 --retry 5
19
-
20
- before_script:
21
- - mkdir -p coverage/rails coverage/grape coverage/sapience
22
-
23
11
  script:
24
- - bundle exec rake reevoocop
12
+ - docker-compose run reevoocop
25
13
  - docker-compose run rspec
26
14
  - docker-compose run rails32
27
15
  - docker-compose run rails42
@@ -29,13 +17,3 @@ script:
29
17
  - docker-compose run grape
30
18
  - docker-compose run sinatra
31
19
 
32
- after_success:
33
- - chown -R $(whoami) coverage
34
- - bundle exec rake coverage:merge coverage:send
35
-
36
- notifications:
37
- slack:
38
- on_success: change
39
- on_failure: change
40
- on_pull_requests: false
41
- secure: apFwkfBQ+3NDJgcLNCHQori9qtr6ePaN3Xx7Sy7NVWwYm9BHNxoX/FN8/hxR63JjXrf1C0hK0FLQ0TiA0BN9PgEEIecg78BvWUwMClDDiwhyYN3H0Bbg35PUFtgDIrOGpu/TYlxNmdHEDYEAxaWsl9wSds8pAJsN6m7VTjGfBwJUDcOiM4L1eRpbp7smPqOjmuQFuOJnO8YkPb+6nUfz53cJrMRUdha89Vgmvnw6cP4/Ms1TsL3vKmMSVbGGh/6WNKPjU6IbuUjwlsh6a9xWxQOk6Wnis/Z+kA+T0XbLMuTLLmzRDuql1tjJeMPi+wukmK1a7GjpPkpkzAgwLQ/CkjTBfIRbMyaBYSuAciuOY8PDtCcT4WLwEvdZbkFmhAdSr1RYxIBpONVfZ/5DT3bpk71+O74OIBqxG6NmkiZ0B6u9/KxbnIINLVAcVaqsN8sdSqWlWKzPm45BfGPXGjmGGgIVFU31rs+W5Zs7IYMNUjZxabYKIv9TsBONbogfbcoGZA+rWWUnQdjypNWJS9wyQDvJ4btxqy8YhDfaV6gF30Un5JcAggMutzKJiYi+qAeh0uN3/9XoXV2N6XBnh58h8ny1NY+0vklWhtFGR1wfFAqkDskvCIZabSeJ5bFM6FtNbNKq9tYciS+eAO1vEYQVDFt9eY2uZF2mFDKRnEegHMU=
data/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## v2.13
2
+ - Add config option to enable/disable metrics from grape
3
+
4
+ ## v2.12
5
+ - feature: 'log hooks', a mechanism for modifying the log event just before it is added to the appender
6
+
7
+ ## v2.11
8
+ - Add config option to enable/disable metrics from ActionController
9
+
10
+ ## v2.10
11
+ - Fix spec for Ruby 2.4.1
12
+ - Bump version to 2.10 in order to properly highlight more significant change
13
+ - Add missing Changelog entry
14
+
15
+ ## v2.9.1
16
+ - Add support for sinatra applications by including `Sapience::Extensions::Sinatra::Middleware::Logging` middleware
17
+ - Bump Ruby version to 2.4.1
18
+
1
19
  ## v2.9.0
2
20
  - Sapience will return more parameters in logs created by Rails::Rack::Logger
3
21
 
@@ -14,7 +32,7 @@
14
32
  - Include current environment in log entries
15
33
 
16
34
  ## v2.6.2
17
- - Bugfix: clear tags after pushing log to processing queue
35
+ - Bugfix: clear tags after pushing log to processing queue
18
36
 
19
37
  ## v2.6.1
20
38
  - Bugfix: Fix sentry logging when payload is nil
data/README.md CHANGED
@@ -22,6 +22,15 @@ Add the gem:
22
22
  gem "sapience", require: "sapience/rails"
23
23
  ```
24
24
 
25
+ The rails integration has the following configuration options:
26
+
27
+ | Option | Description | Values | Default |
28
+ | --------------------- | ---------- | ------ | ----- |
29
+ | silent_rails | less noisy rails logs | `boolean` | `true` |
30
+ | silent_rack | suppress "Request Started..." log message from rack | `boolean` | `true` |
31
+ | silent_active_record | emit metrics from ActiveRecord | `boolean` | `true` |
32
+ | rails_ac_metrics | emit metrics from ActionController | `boolean` | `true` |
33
+
25
34
  ### Sinatra
26
35
  Add the gem:
27
36
 
@@ -119,6 +128,13 @@ API.logger = Sapience.logger
119
128
  **Note**: If you're using the rackup command to run your server in development, pass the -q flag to silence the default
120
129
  rack logger so you don't get double logging.
121
130
 
131
+
132
+ The grape integration has the following configuration options:
133
+
134
+ | Option | Description | Values | Default |
135
+ | --------------------- | ---------- | ------ | ----- |
136
+ | grape_metrics | emit metrics from grape | `boolean` | `true` |
137
+
122
138
  ### Standalone
123
139
  Add the gem:
124
140
 
@@ -156,6 +172,10 @@ Or if you, like us, have many projects that use the same configuration you can c
156
172
  default:
157
173
  app_name: My Application
158
174
  log_level: debug
175
+ silent_active_record: true
176
+ silent_rails: true
177
+ silent_rack: true
178
+ rails_ac_metrics: true
159
179
  appenders:
160
180
  - stream:
161
181
  io: STDOUT
@@ -236,6 +256,34 @@ For further details about "app_name", "filter_parameters", "appenders", "metrics
236
256
  - [logger](docs/logger.md)
237
257
 
238
258
 
259
+ ### Log hooks
260
+ *Log hooks* allow us to modify the log object **Sapience::Log** just before it is added to the appender. A 'log hook' can be an object that responds to #call. Multiple hooks can be used.
261
+ The following examples show how to use hooks to:
262
+
263
+ * inject Datadog APM tracing data in every log event.
264
+ * modify the logs event's **message** field.
265
+
266
+ ```ruby
267
+ my_logger = Sapience.logger
268
+
269
+ # inject Datadog tracing info in payload hash
270
+ my_logger.log_hooks << ->(log) do
271
+ trace_data = {
272
+ dd: {
273
+ span_id: ::Datadog.tracer.active_correlation.span_id.to_s,
274
+ trace_id: ::Datadog.tracer.active_correlation.trace_id.to_s
275
+ }
276
+ }
277
+ log.payload? ? log.payload.merge!(trace_data) : log.payload = trace_data
278
+ end
279
+
280
+ # append number of times a GC occurred since process started in field 'message'
281
+ my_logger.log_hooks << ->(log) do
282
+ log.message = "#{log.message} = GC count: #{GC.count}"
283
+ end
284
+ ```
285
+
286
+
239
287
  ## Running the tests
240
288
 
241
289
  You need to create the test postgres db, by running the command below:
data/docker-compose.yml CHANGED
@@ -8,13 +8,13 @@ services:
8
8
  RABBITMQ_DEFAULT_PASS: tests
9
9
 
10
10
  postgres:
11
- image: postgres:latest
11
+ image: postgres:9
12
12
  environment:
13
13
  POSTGRES_USER: sapience
14
14
  POSTGRES_PASSWORD: tests
15
15
 
16
16
  base:
17
- image: ruby:2.3
17
+ image: ruby:2.4
18
18
  cpu_shares: 4
19
19
  # Specify the directory from where all commands sent to the container will be
20
20
  # issued to where the code is mounted:
@@ -32,7 +32,13 @@ services:
32
32
  # "/usr/src/app" folder:
33
33
  - .:/usr/src/app
34
34
 
35
-
35
+ reevoocop:
36
+ extends:
37
+ service: base
38
+ entrypoint: /usr/src/app/dev-entrypoint.sh
39
+ command: bundle exec rake reevoocop
40
+ environment:
41
+ PATH: /usr/src/app/bin:/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
36
42
 
37
43
  rspec:
38
44
  extends:
@@ -46,11 +52,10 @@ services:
46
52
  PATH: /usr/src/app/bin:/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
47
53
 
48
54
 
49
-
50
55
  rails32:
51
56
  extends:
52
57
  service: base
53
- image: ruby:2.1
58
+ image: ruby:2.3
54
59
  working_dir: /usr/src/app/test_apps/rails_3_2
55
60
  entrypoint: /usr/src/app/dev-entrypoint.sh
56
61
  command: bundle exec rspec
data/lib/sapience/base.rb CHANGED
@@ -3,7 +3,7 @@ module Sapience
3
3
  # rubocop:disable ClassLength
4
4
  class Base
5
5
  # Class name to be logged
6
- attr_accessor :name, :filter
6
+ attr_accessor :name, :filter, :log_hooks
7
7
  include Sapience::LogMethods
8
8
 
9
9
  # Set the logging level for this logger
@@ -174,7 +174,7 @@ module Sapience
174
174
  # Proc: Only include log messages where the supplied Proc returns true
175
175
  # The Proc must return true or false
176
176
  # rubocop:disable AbcSize, PerceivedComplexity, CyclomaticComplexity, LineLength
177
- def initialize(klass, level = nil, filter = nil)
177
+ def initialize(klass, level = nil, filter = nil, log_hooks = [])
178
178
  # Support filtering all messages to this logger using a Regular Expression
179
179
  # or Proc
180
180
  fail ArgumentError, ":filter must be a Regexp or Proc" unless filter.nil? || filter.is_a?(Regexp) || filter.is_a?(Proc)
@@ -183,6 +183,7 @@ module Sapience
183
183
  @name = klass if klass.is_a?(String)
184
184
  @name ||= klass.name if klass.respond_to?(:name)
185
185
  @name ||= klass.class.name
186
+ @log_hooks = log_hooks
186
187
 
187
188
  if level.nil?
188
189
  # Allow the global default level to determine this loggers log level
@@ -271,6 +272,9 @@ module Sapience
271
272
  end
272
273
  log.payload = payload unless payload.empty?
273
274
  end
275
+
276
+ log_hooks.each { |h| h.call(log) }
277
+
274
278
  self.log(log) if include_message?(log)
275
279
  end
276
280
  # rubocop:enable AbcSize, PerceivedComplexity, CyclomaticComplexity, LineLength
@@ -8,7 +8,8 @@ module Sapience
8
8
  attr_reader :default_level, :backtrace_level, :backtrace_level_index
9
9
  attr_writer :host
10
10
  attr_accessor :app_name, :ap_options, :appenders, :log_executor, :filter_parameters,
11
- :metrics, :error_handler, :silent_active_record, :silent_rails, :silent_rack
11
+ :metrics, :error_handler, :silent_active_record, :silent_rails, :silent_rack,
12
+ :rails_ac_metrics, :grape_metrics
12
13
 
13
14
  SUPPORTED_EXECUTORS = %i(single_thread_executor immediate_executor).freeze
14
15
  DEFAULT = {
@@ -23,6 +24,8 @@ module Sapience
23
24
  silent_active_record: false,
24
25
  silent_rails: false,
25
26
  silent_rack: false,
27
+ rails_ac_metrics: true,
28
+ grape_metrics: true,
26
29
  }.freeze
27
30
 
28
31
  # Initial default Level for all new instances of Sapience::Logger
@@ -44,6 +47,8 @@ module Sapience
44
47
  self.silent_active_record = @options[:silent_active_record]
45
48
  self.silent_rails = @options[:silent_rails]
46
49
  self.silent_rack = @options[:silent_rack]
50
+ self.rails_ac_metrics = @options[:rails_ac_metrics]
51
+ self.grape_metrics = @options[:grape_metrics]
47
52
  end
48
53
 
49
54
  # Sets the global default log level
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require "sapience"
3
3
  require "sapience/extensions/grape/timings"
4
+ require "grape"
4
5
  require "sapience/extensions/grape/middleware/logging"
5
6
  require "sapience/extensions/grape/notifications"
6
7
 
@@ -18,6 +19,6 @@ module Sapience
18
19
  end
19
20
  Sapience.configure
20
21
  ::Grape::API.send(:include, Sapience::Loggable)
21
- Sapience::Extensions::Grape::Notifications.use
22
+ Sapience::Extensions::Grape::Notifications.use if Sapience.config.grape_metrics
22
23
  end
23
24
  end
@@ -42,12 +42,14 @@ module Sapience
42
42
  # Replace the Sidekiq logger
43
43
  Sidekiq::Logging.logger = Sapience[Sidekiq] if defined?(Sidekiq)
44
44
 
45
- # Replace the Sequel logger
46
- Sequel::Database.logger = Sapience[Sequel] if defined?(Sequel::Database)
47
-
48
45
  # Replace the Sidetiq logger
49
46
  Sidetiq.logger = Sapience[Sidetiq] if defined?(Sidetiq)
50
47
 
48
+ # Replace the Sequel logger
49
+ if defined?(Sequel::Database) && Sequel::Database.respond_to?(:logger=)
50
+ Sequel::Database.logger = Sapience[Sequel]
51
+ end
52
+
51
53
  # Replace the Raven logger
52
54
  # Raven::Configuration.logger = Sapience[Raven::Configuration] if defined?(Raven::Configuration)
53
55
  Raven.send(:include, Sapience::Loggable)
@@ -83,7 +85,7 @@ module Sapience
83
85
  end
84
86
  Sapience::Extensions::ActionView::LogSubscriber.attach_to :action_view
85
87
  # Sapience::Extensions::ActiveJob::LogSubscriber.attach_to :active_job
86
- Sapience::Extensions::ActionController::Notifications.use
88
+ Sapience::Extensions::ActionController::Notifications.use if Sapience.config.rails_ac_metrics
87
89
  Sapience::Extensions::ActiveJob::Notifications.use if defined?(ActiveJob)
88
90
  end
89
91
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Sapience
3
- VERSION = "2.9.1"
3
+ VERSION = "2.14"
4
4
  end
data/sapience.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency "concurrent-ruby", "~> 1.0"
29
29
  spec.add_development_dependency "active_model_serializers", "~> 0.10.0"
30
30
  spec.add_development_dependency "appraisal"
31
- spec.add_development_dependency "bundler", "~> 1.12"
31
+ spec.add_development_dependency "bundler"
32
32
  spec.add_development_dependency "codeclimate-test-reporter"
33
33
  spec.add_development_dependency "dogstatsd-ruby", "~> 2.0"
34
34
  spec.add_development_dependency "fuubar"
@@ -36,8 +36,8 @@ Gem::Specification.new do |spec|
36
36
  spec.add_development_dependency "grape"
37
37
  spec.add_development_dependency "memory_profiler"
38
38
  spec.add_development_dependency "pry-nav"
39
- spec.add_development_dependency "rails", "~> 5.0.0.1"
40
- spec.add_development_dependency "rake", "~> 10.0"
39
+ spec.add_development_dependency "rails", "~> 5.0"
40
+ spec.add_development_dependency "rake"
41
41
  spec.add_development_dependency "reevoocop"
42
42
  spec.add_development_dependency "rspec", "~> 3.0"
43
43
  spec.add_development_dependency "rspec-its"
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sapience
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.1
4
+ version: '2.14'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikael Henriksson
8
8
  - Alex Malkov
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-09-27 00:00:00.000000000 Z
12
+ date: 2021-03-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby
@@ -57,16 +57,16 @@ dependencies:
57
57
  name: bundler
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: '1.12'
62
+ version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: '1.12'
69
+ version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: codeclimate-test-reporter
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -171,28 +171,28 @@ dependencies:
171
171
  requirements:
172
172
  - - "~>"
173
173
  - !ruby/object:Gem::Version
174
- version: 5.0.0.1
174
+ version: '5.0'
175
175
  type: :development
176
176
  prerelease: false
177
177
  version_requirements: !ruby/object:Gem::Requirement
178
178
  requirements:
179
179
  - - "~>"
180
180
  - !ruby/object:Gem::Version
181
- version: 5.0.0.1
181
+ version: '5.0'
182
182
  - !ruby/object:Gem::Dependency
183
183
  name: rake
184
184
  requirement: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - "~>"
186
+ - - ">="
187
187
  - !ruby/object:Gem::Version
188
- version: '10.0'
188
+ version: '0'
189
189
  type: :development
190
190
  prerelease: false
191
191
  version_requirements: !ruby/object:Gem::Requirement
192
192
  requirements:
193
- - - "~>"
193
+ - - ">="
194
194
  - !ruby/object:Gem::Version
195
- version: '10.0'
195
+ version: '0'
196
196
  - !ruby/object:Gem::Dependency
197
197
  name: reevoocop
198
198
  requirement: !ruby/object:Gem::Requirement
@@ -389,7 +389,7 @@ licenses:
389
389
  - MIT
390
390
  metadata:
391
391
  allowed_push_host: https://rubygems.org
392
- post_install_message:
392
+ post_install_message:
393
393
  rdoc_options: []
394
394
  require_paths:
395
395
  - lib
@@ -404,9 +404,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
404
404
  - !ruby/object:Gem::Version
405
405
  version: '0'
406
406
  requirements: []
407
- rubyforge_project:
408
- rubygems_version: 2.6.11
409
- signing_key:
407
+ rubyforge_project:
408
+ rubygems_version: 2.6.14.4
409
+ signing_key:
410
410
  specification_version: 4
411
411
  summary: Hasslefree autoconfiguration for logging, metrics and exception collection.
412
412
  test_files: []