sapience 2.2.3 → 2.3.3
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/CHANGELOG.md +15 -0
- data/README.md +0 -2
- data/config/default.yml +2 -1
- data/docs/metrics.md +22 -0
- data/lib/sapience/configuration.rb +1 -10
- data/lib/sapience/logger.rb +1 -1
- data/lib/sapience/metrics/datadog.rb +41 -2
- data/lib/sapience/rails/engine.rb +1 -6
- data/lib/sapience/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45cf15c8cd01eccd3169eec6a03022ad719cb869
|
4
|
+
data.tar.gz: 554f7d8d2050b1700d8ad625a9ae9a0c3d891fa8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 137cc64c62b9205a8cf0ee79f9268fe0393b95e6416455590f6487b96005e789dce97bc599aa0deb774652cecb98444a5fbf1e1fe2a9b48d6ed853d28630c9fd
|
7
|
+
data.tar.gz: ae743a5713cf3743f1e835c80b7838ea83299a6e51cd287d67f50486652f90af0d26cafd6d69b51fc44824cdca78782b285dade3f955b896f866fb900a08f058
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
## v2.3.3
|
2
|
+
|
3
|
+
- Put back single_thread_executor and leave immediate_executor only for test environment
|
4
|
+
|
5
|
+
|
6
|
+
## v2.3.2
|
7
|
+
|
8
|
+
- Changing the log level of ActiveRecord has the side effect of changing the
|
9
|
+
log level of Rails.logger. We don't want that therefore we remove the
|
10
|
+
assignment.
|
11
|
+
|
12
|
+
## v2.3.1
|
13
|
+
|
14
|
+
- Add namespaced events
|
15
|
+
|
1
16
|
## v2.2.3
|
2
17
|
|
3
18
|
- Set immediate_executor by default to avoid Errno::EIO error for multithreaded processes.
|
data/README.md
CHANGED
@@ -104,7 +104,6 @@ Add a `config/sapience.yml` file to you appplication. Or if you, like us, have m
|
|
104
104
|
default:
|
105
105
|
app_name: My Application
|
106
106
|
log_level: debug
|
107
|
-
log_level_active_record: info
|
108
107
|
appenders:
|
109
108
|
- stream:
|
110
109
|
io: STDOUT
|
@@ -159,7 +158,6 @@ production:
|
|
159
158
|
Sapience.configure(force: true) do |config|
|
160
159
|
config.app_name = "My Application"
|
161
160
|
config.default_level = :info
|
162
|
-
config.log_level_active_record = :info
|
163
161
|
config.backtrace_level = :error
|
164
162
|
config.filter_parameters = %w(password password_confirmation)
|
165
163
|
config.appenders = [
|
data/config/default.yml
CHANGED
@@ -3,7 +3,7 @@ default:
|
|
3
3
|
filter_parameters:
|
4
4
|
- password
|
5
5
|
- password_confirmation
|
6
|
-
log_executor:
|
6
|
+
log_executor: single_thread_executor
|
7
7
|
log_level: info
|
8
8
|
appenders:
|
9
9
|
- stream:
|
@@ -12,6 +12,7 @@ default:
|
|
12
12
|
|
13
13
|
test:
|
14
14
|
log_level: warn
|
15
|
+
log_executor: immediate_executor
|
15
16
|
appenders:
|
16
17
|
- stream:
|
17
18
|
file_name: log/test.log
|
data/docs/metrics.md
CHANGED
@@ -45,6 +45,7 @@ metrics.count("metric-key", -3)
|
|
45
45
|
metrics.histogram("metric-key", 2_500)
|
46
46
|
metrics.gauge("metric-key", 1_000, {})
|
47
47
|
metrics.event("metric-key", "description about event", {})
|
48
|
+
metrics.event("metric-key", "description about event", {namespace: true})
|
48
49
|
metrics.batch do
|
49
50
|
metrics.event("metric-key", "description about event", {})
|
50
51
|
metrics.increment("another-metric-key", 2)
|
@@ -85,3 +86,24 @@ We use it mainly for error metrics. Example:
|
|
85
86
|
```ruby
|
86
87
|
metrics.increment('error', tags: %w(error_class:AccessDenied module:authentication component:permissions))
|
87
88
|
```
|
89
|
+
|
90
|
+
### Event Metric
|
91
|
+
|
92
|
+
For the `event` metric the first parameter is `title` - string.
|
93
|
+
By default it is not namespaced, however with option `namespace: true` it will automatically namespace it.
|
94
|
+
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
metrics.event("metric-key", "description about event", {namespace: true})
|
98
|
+
|
99
|
+
```
|
100
|
+
Output: `app_name.environment.metric-key`
|
101
|
+
|
102
|
+
#### Event Grouping
|
103
|
+
|
104
|
+
In order to group similar events, use option: `aggregation_key`
|
105
|
+
|
106
|
+
```ruby
|
107
|
+
metrics.event("metric-key", "description about event", {namespace: true, aggregation_key:true})
|
108
|
+
|
109
|
+
```
|
@@ -4,14 +4,13 @@ module Sapience
|
|
4
4
|
|
5
5
|
# rubocop:disable ClassVars
|
6
6
|
class Configuration
|
7
|
-
attr_reader :default_level, :
|
7
|
+
attr_reader :default_level, :backtrace_level, :backtrace_level_index
|
8
8
|
attr_writer :host
|
9
9
|
attr_accessor :app_name, :ap_options, :appenders, :log_executor, :filter_parameters, :metrics, :error_handler
|
10
10
|
|
11
11
|
SUPPORTED_EXECUTORS = %i(single_thread_executor immediate_executor).freeze
|
12
12
|
DEFAULT = {
|
13
13
|
log_level: :info,
|
14
|
-
log_level_active_record: :info,
|
15
14
|
host: nil,
|
16
15
|
ap_options: { multiline: false },
|
17
16
|
appenders: [{ stream: { io: STDOUT, formatter: :color } }],
|
@@ -28,7 +27,6 @@ module Sapience
|
|
28
27
|
@options[:log_executor] &&= @options[:log_executor].to_sym
|
29
28
|
validate_log_executor!(@options[:log_executor])
|
30
29
|
self.default_level = @options[:log_level].to_sym
|
31
|
-
self.log_level_active_record = @options[:log_level_active_record].to_sym
|
32
30
|
self.backtrace_level = @options[:log_level].to_sym
|
33
31
|
self.host = @options[:host]
|
34
32
|
self.app_name = @options[:app_name]
|
@@ -47,13 +45,6 @@ module Sapience
|
|
47
45
|
@default_level_index = level_to_index(level)
|
48
46
|
end
|
49
47
|
|
50
|
-
# Sets the active record log level
|
51
|
-
def log_level_active_record=(level)
|
52
|
-
@log_level_active_record = level
|
53
|
-
# For performance reasons pre-calculate the level index
|
54
|
-
@log_level_active_record_index = level_to_index(level)
|
55
|
-
end
|
56
|
-
|
57
48
|
# Returns the symbolic level for the supplied level index
|
58
49
|
def index_to_level(level_index)
|
59
50
|
LEVELS[level_index]
|
data/lib/sapience/logger.rb
CHANGED
@@ -18,7 +18,7 @@ module Sapience
|
|
18
18
|
logger.trace "Appender thread: Flushing appender: #{appender.class.name}"
|
19
19
|
appender.flush
|
20
20
|
rescue StandardError => exc
|
21
|
-
|
21
|
+
$stderr.write("Appender thread: Failed to flush to appender: #{appender.inspect}\n #{exc.inspect}")
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -90,9 +90,48 @@ module Sapience
|
|
90
90
|
provider.batch(&block)
|
91
91
|
end
|
92
92
|
|
93
|
-
|
93
|
+
# Create Event
|
94
|
+
#
|
95
|
+
# @param [String] title the title of the event
|
96
|
+
# @param [String] text the description
|
97
|
+
# @param [Hash] opts event options
|
98
|
+
# @option opts [Array] :namespaced_keys the keys we want to be namespaced. Valid: :title or :aggregation_key
|
99
|
+
# @option opts [String] :namespace_prefix custom namespace
|
100
|
+
# (to override default from Sapience `app_name.environment`)
|
101
|
+
# @option opts [String] :aggregation_key custom aggregation_key
|
102
|
+
# (to override default based on `title`, only applies when :aggregation_key includes in namespaced_keys option)
|
103
|
+
#
|
104
|
+
# @example Create an Event
|
105
|
+
# Sapience.metrics.event('article-published', "article #123")
|
106
|
+
#
|
107
|
+
# @example Create a namespaced Event with default namespacing
|
108
|
+
# Sapience.metrics.event('article-published', "article #123", {namespaced_keys: [:title, :aggregation_key]})
|
109
|
+
#
|
110
|
+
# @example Create a namespaced Event with custom namespacing
|
111
|
+
# Sapience.metrics.event(
|
112
|
+
# 'article-published',
|
113
|
+
# "article #123",
|
114
|
+
# {namespace_prefix: 'custom_namespace', namespaced_keys: [:title, :aggregation_key]}
|
115
|
+
# )
|
116
|
+
#
|
117
|
+
# @example Create an Event with a custom aggregation_key
|
118
|
+
# Sapience.metrics.event('article-published', "article #123", {aggregation_key: 'custom_aggregation_key')
|
119
|
+
|
120
|
+
def event(title, text = "", opts = {})
|
94
121
|
return false unless valid?
|
95
|
-
|
122
|
+
fail ArgumentError "Title must be provided" unless title
|
123
|
+
opts ||= {}
|
124
|
+
|
125
|
+
namespaced_keys = opts.delete(:namespaced_keys) || []
|
126
|
+
namespace_prefix = opts.delete(:namespace_prefix) || namespace
|
127
|
+
|
128
|
+
if namespaced_keys.include?(:aggregation_key)
|
129
|
+
aggregation_key = opts[:aggregation_key] || title
|
130
|
+
opts[:aggregation_key] = "#{namespace_prefix}.#{aggregation_key}"
|
131
|
+
end
|
132
|
+
|
133
|
+
title = "#{namespace_prefix}.#{title}" if namespaced_keys.include?(:title)
|
134
|
+
provider.event(title, text, opts)
|
96
135
|
end
|
97
136
|
|
98
137
|
def namespace
|
@@ -72,12 +72,7 @@ module Sapience
|
|
72
72
|
Bugsnag.configure { |config| config.logger = Sapience[Bugsnag] } if defined?(Bugsnag)
|
73
73
|
Sapience::Extensions::ActionController::LogSubscriber.attach_to :action_controller
|
74
74
|
# Sapience::Extensions::ActiveSupport::MailerLogSubscriber.attach_to :action_mailer
|
75
|
-
if defined?(ActiveRecord)
|
76
|
-
Sapience::Extensions::ActiveRecord::Notifications.use
|
77
|
-
ActiveRecord::Base.logger.level =
|
78
|
-
Sapience.config.log_level_active_record if defined?(ActiveRecord::Base.logger.level)
|
79
|
-
end
|
80
|
-
|
75
|
+
Sapience::Extensions::ActiveRecord::Notifications.use if defined?(ActiveRecord)
|
81
76
|
Sapience::Extensions::ActionView::LogSubscriber.attach_to :action_view
|
82
77
|
# Sapience::Extensions::ActiveJob::LogSubscriber.attach_to :active_job
|
83
78
|
Sapience::Extensions::ActionController::Notifications.use
|
data/lib/sapience/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sapience
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikael Henriksson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-06-
|
12
|
+
date: 2017-06-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: concurrent-ruby
|