logged 0.0.3 → 0.1.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/.gitignore +1 -0
- data/.rubocop.yml +3 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +5 -0
- data/README.md +23 -2
- data/lib/logged/logger.rb +19 -0
- data/lib/logged/rack/logger.rb +4 -2
- data/lib/logged/subscriptions.rb +56 -0
- data/lib/logged/version.rb +1 -1
- data/lib/logged.rb +22 -68
- data/logged.gemspec +4 -3
- data/spec/config_spec.rb +19 -0
- data/spec/formatter/key_value_spec.rb +5 -1
- data/spec/formatter/single_key_spec.rb +10 -0
- data/spec/removes_rails_log_subscribers_spec.rb +61 -0
- metadata +37 -11
- data/spec/logged_spec.rb +0 -63
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a294551c9c1d8f611c79fa771132e57b586db5c
|
4
|
+
data.tar.gz: 82cad862705898fe8429960241e81b33b9394f04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c071f8408c92af3756ba5249da9b6b35eb630f3aefb2cd338f13df6b1457b508280cf913538e407205c317e049f1fd063d47ef27c48d4190626d2365883f1e6
|
7
|
+
data.tar.gz: 680ed90a1eb0aa9da95580dafe52b347b62296f40dc313c496833e0d26b717dfd6fb8b83f1b871a87526fd3ba1f0b6f3bbc897f5dbafbf259bbcbd28e947f0e0
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -29,12 +29,11 @@ Or install it yourself as:
|
|
29
29
|
|
30
30
|
## Usage
|
31
31
|
|
32
|
-
###
|
32
|
+
### Configuration overview
|
33
33
|
|
34
34
|
```ruby
|
35
35
|
# config/environments/*.rb or config/application.rb
|
36
36
|
Rails.application.configure do
|
37
|
-
|
38
37
|
# Enabling it
|
39
38
|
config.logged.enabled = true
|
40
39
|
|
@@ -75,6 +74,28 @@ Rails.application.configure do
|
|
75
74
|
end
|
76
75
|
```
|
77
76
|
|
77
|
+
### Logging
|
78
|
+
|
79
|
+
Get wrapping logger:
|
80
|
+
```ruby
|
81
|
+
logger = Logged.logger_by_component(:foo)
|
82
|
+
```
|
83
|
+
|
84
|
+
Actual logging:
|
85
|
+
```ruby
|
86
|
+
logger = Logged.logger_by_component(:foo)
|
87
|
+
logger.info('bar')
|
88
|
+
```
|
89
|
+
|
90
|
+
Disable/Enable logger:
|
91
|
+
```ruby
|
92
|
+
logger = Logged.logger_by_component(:foo)
|
93
|
+
logger.disable!
|
94
|
+
logger.info('bar') # doesn't get logged
|
95
|
+
logger.enable!
|
96
|
+
```
|
97
|
+
|
98
|
+
|
78
99
|
### Lograge
|
79
100
|
|
80
101
|
You can replicate the output of lograge by using the following configuration:
|
data/lib/logged/logger.rb
CHANGED
@@ -12,9 +12,12 @@ module Logged
|
|
12
12
|
@loggers = loggers
|
13
13
|
@component = component
|
14
14
|
@formatter = formatter
|
15
|
+
@enabled = true
|
15
16
|
end
|
16
17
|
|
17
18
|
def add(severity, message = nil, progname = nil)
|
19
|
+
return unless enabled?
|
20
|
+
|
18
21
|
message = yield if block_given? && message.blank?
|
19
22
|
message = progname if message.blank?
|
20
23
|
|
@@ -56,6 +59,22 @@ module Logged
|
|
56
59
|
|
57
60
|
def <<(_msg); end
|
58
61
|
|
62
|
+
def enabled?
|
63
|
+
@enabled
|
64
|
+
end
|
65
|
+
|
66
|
+
def enabled=(enable)
|
67
|
+
@enabled = !!enable
|
68
|
+
end
|
69
|
+
|
70
|
+
def enable!
|
71
|
+
self.enabled = true
|
72
|
+
end
|
73
|
+
|
74
|
+
def disable!
|
75
|
+
self.enabled = false
|
76
|
+
end
|
77
|
+
|
59
78
|
private
|
60
79
|
|
61
80
|
def prepare_data(event, data, options)
|
data/lib/logged/rack/logger.rb
CHANGED
@@ -14,8 +14,6 @@ module Logged
|
|
14
14
|
|
15
15
|
request = ActionDispatch::Request.new(env)
|
16
16
|
|
17
|
-
loggers = Logged.components.map { |c| Logged.logger_by_component(c) }.compact.uniq
|
18
|
-
|
19
17
|
if loggers.length > 0
|
20
18
|
loggers_tagged(loggers, request) { @app.call(env) }
|
21
19
|
else
|
@@ -27,6 +25,10 @@ module Logged
|
|
27
25
|
|
28
26
|
private
|
29
27
|
|
28
|
+
def loggers
|
29
|
+
@loggers ||= Logged.components.map { |c| Logged.logger_by_component(c) }.compact.uniq
|
30
|
+
end
|
31
|
+
|
30
32
|
def loggers_tagged(loggers, request, &block)
|
31
33
|
logger = loggers.shift
|
32
34
|
tags = tags_for_component(logger.component, request)
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Logged
|
2
|
+
# Railtie for logged
|
3
|
+
module Subscriptions
|
4
|
+
# remove rails log subscriber by component name
|
5
|
+
def remove_rails_subscriber(component)
|
6
|
+
subscriber = rails_subscriber(component)
|
7
|
+
|
8
|
+
return unless subscriber
|
9
|
+
|
10
|
+
unsubscribe(component, subscriber)
|
11
|
+
end
|
12
|
+
|
13
|
+
# try to guess and get rails log subscriber by component name
|
14
|
+
def rails_subscriber(component)
|
15
|
+
class_name = "::#{component.to_s.camelize}::LogSubscriber"
|
16
|
+
|
17
|
+
return unless Object.const_defined?(class_name)
|
18
|
+
|
19
|
+
clazz = class_name.constantize
|
20
|
+
|
21
|
+
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
22
|
+
return subscriber if subscriber.is_a?(clazz)
|
23
|
+
end
|
24
|
+
|
25
|
+
nil
|
26
|
+
end
|
27
|
+
|
28
|
+
# unsubscribe a subscriber from a component
|
29
|
+
def unsubscribe(component, subscriber)
|
30
|
+
events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
|
31
|
+
|
32
|
+
events.each do |event|
|
33
|
+
ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
|
34
|
+
if listener.instance_variable_get('@delegate') == subscriber
|
35
|
+
ActiveSupport::Notifications.unsubscribe listener
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# register log subscriber with logged
|
42
|
+
def register(component, subscriber)
|
43
|
+
return if @subscribers[component].include?(subscriber)
|
44
|
+
|
45
|
+
@subscribers[component] << subscriber
|
46
|
+
end
|
47
|
+
|
48
|
+
# require log subscribers for rails frameworks
|
49
|
+
def require_rails_subscribers
|
50
|
+
require 'logged/log_subscriber/action_controller' if defined?(ActionController)
|
51
|
+
require 'logged/log_subscriber/action_view' if defined?(ActionView)
|
52
|
+
require 'logged/log_subscriber/active_record' if defined?(ActiveRecord)
|
53
|
+
require 'logged/log_subscriber/action_mailer' if defined?(ActionMailer)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/logged/version.rb
CHANGED
data/lib/logged.rb
CHANGED
@@ -8,10 +8,12 @@ require 'logged/formatter/single_key'
|
|
8
8
|
require 'logged/formatter/logstash'
|
9
9
|
require 'logged/railtie'
|
10
10
|
require 'logged/rack/logger'
|
11
|
+
require 'logged/subscriptions'
|
11
12
|
|
12
13
|
# logged
|
13
14
|
module Logged
|
14
15
|
extend Logged::LevelConversion
|
16
|
+
extend Logged::Subscriptions
|
15
17
|
|
16
18
|
# special keys which not represent a component
|
17
19
|
CONFIG_KEYS = Configuration::DEFAULT_VALUES.keys + [:loggers, :disable_rails_logging]
|
@@ -19,7 +21,6 @@ module Logged
|
|
19
21
|
mattr_accessor :app, :config
|
20
22
|
|
21
23
|
class << self
|
22
|
-
|
23
24
|
# setup logged
|
24
25
|
def setup(app)
|
25
26
|
self.app = app
|
@@ -27,13 +28,7 @@ module Logged
|
|
27
28
|
|
28
29
|
app.config.middleware.insert_after ::Rails::Rack::Logger, Logged::Rack::Logger
|
29
30
|
|
30
|
-
|
31
|
-
remove_rails_subscriber(component) if config[component].disable_rails_logging
|
32
|
-
|
33
|
-
next unless config[component].enabled
|
34
|
-
|
35
|
-
enable_component(component)
|
36
|
-
end
|
31
|
+
setup_components
|
37
32
|
end
|
38
33
|
|
39
34
|
# default log level
|
@@ -66,7 +61,7 @@ module Logged
|
|
66
61
|
|
67
62
|
@component_loggers[key] = Logger.new(loggers, component, formatter)
|
68
63
|
end
|
69
|
-
|
64
|
+
alias_method :'[]', :logger_by_component
|
70
65
|
|
71
66
|
# loggers for component
|
72
67
|
def loggers_for(component)
|
@@ -111,6 +106,8 @@ module Logged
|
|
111
106
|
def enable_component(component)
|
112
107
|
loggers = loggers_for(component)
|
113
108
|
|
109
|
+
return unless loggers.any?
|
110
|
+
|
114
111
|
loggers.each do |logger, options|
|
115
112
|
level = options[:level] || config[component].level || default_level
|
116
113
|
|
@@ -118,10 +115,8 @@ module Logged
|
|
118
115
|
end
|
119
116
|
|
120
117
|
# only attach subscribers with loggers
|
121
|
-
|
122
|
-
|
123
|
-
subscriber.attach_to(component)
|
124
|
-
end
|
118
|
+
@subscribers[component].each do |subscriber|
|
119
|
+
subscriber.attach_to(component)
|
125
120
|
end
|
126
121
|
end
|
127
122
|
|
@@ -130,13 +125,9 @@ module Logged
|
|
130
125
|
return false unless event
|
131
126
|
return false unless conf.enabled
|
132
127
|
|
133
|
-
if !event.is_a?(String) && conf.ignore.is_a?(Array)
|
134
|
-
return true if conf.ignore.include?(event.name)
|
135
|
-
end
|
128
|
+
return true if !event.is_a?(String) && conf.ignore.is_a?(Array) && conf.ignore.include?(event.name)
|
136
129
|
|
137
|
-
if conf.custom_ignore.respond_to?(:call)
|
138
|
-
return conf.custom_ignore.call(event)
|
139
|
-
end
|
130
|
+
return conf.custom_ignore.call(event) if conf.custom_ignore.respond_to?(:call)
|
140
131
|
|
141
132
|
false
|
142
133
|
end
|
@@ -154,67 +145,30 @@ module Logged
|
|
154
145
|
config.keys - CONFIG_KEYS
|
155
146
|
end
|
156
147
|
|
157
|
-
#
|
158
|
-
def
|
159
|
-
|
160
|
-
|
161
|
-
return unless subscriber
|
162
|
-
|
163
|
-
unsubscribe(component, subscriber)
|
148
|
+
# rack request environment
|
149
|
+
def request_env
|
150
|
+
Thread.current[:logged_request_env]
|
164
151
|
end
|
165
152
|
|
166
|
-
|
167
|
-
def rails_subscriber(component)
|
168
|
-
class_name = "::#{component.to_s.camelize}::LogSubscriber"
|
169
|
-
|
170
|
-
return unless Object.const_defined?(class_name)
|
171
|
-
|
172
|
-
clazz = class_name.constantize
|
173
|
-
|
174
|
-
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
175
|
-
return subscriber if subscriber.is_a?(clazz)
|
176
|
-
end
|
153
|
+
private
|
177
154
|
|
178
|
-
|
179
|
-
|
155
|
+
def setup_components
|
156
|
+
components.each do |component|
|
157
|
+
remove_rails_subscriber(component) if config[component].disable_rails_logging
|
180
158
|
|
181
|
-
|
182
|
-
def unsubscribe(component, subscriber)
|
183
|
-
events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
|
159
|
+
next unless config[component].enabled
|
184
160
|
|
185
|
-
|
186
|
-
ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
|
187
|
-
if listener.instance_variable_get('@delegate') == subscriber
|
188
|
-
ActiveSupport::Notifications.unsubscribe listener
|
189
|
-
end
|
190
|
-
end
|
161
|
+
enable_component(component)
|
191
162
|
end
|
192
163
|
end
|
193
164
|
|
194
|
-
# register log subscriber with logged
|
195
|
-
def register(component, subscriber)
|
196
|
-
return if @subscribers[component].include?(subscriber)
|
197
|
-
|
198
|
-
@subscribers[component] << subscriber
|
199
|
-
end
|
200
|
-
|
201
|
-
def request_env
|
202
|
-
Thread.current[:logged_request_env]
|
203
|
-
end
|
204
|
-
|
205
|
-
private
|
206
|
-
|
207
165
|
def init
|
208
|
-
@subscribers
|
166
|
+
@subscribers ||= Hash.new { |hash, key| hash[key] = [] }
|
167
|
+
@component_loggers = {}
|
209
168
|
|
210
|
-
|
169
|
+
require_rails_subscribers
|
211
170
|
end
|
212
171
|
end
|
213
172
|
|
214
173
|
init
|
215
174
|
end
|
216
|
-
|
217
|
-
require 'logged/log_subscriber/action_controller' if defined?(ActionController)
|
218
|
-
require 'logged/log_subscriber/action_view' if defined?(ActionView)
|
219
|
-
require 'logged/log_subscriber/active_record' if defined?(ActiveRecord)
|
220
|
-
require 'logged/log_subscriber/action_mailer' if defined?(ActionMailer)
|
data/logged.gemspec
CHANGED
@@ -19,9 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
23
|
-
spec.add_development_dependency 'rake', '~> 10.
|
24
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.9'
|
23
|
+
spec.add_development_dependency 'rake', '~> 10.4'
|
24
|
+
spec.add_development_dependency 'rspec', '~> 3.2'
|
25
|
+
spec.add_development_dependency 'rails', rails_version
|
25
26
|
spec.add_development_dependency 'actionpack', rails_version
|
26
27
|
spec.add_development_dependency 'actionview', rails_version
|
27
28
|
spec.add_development_dependency 'actionmailer', rails_version
|
data/spec/config_spec.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'logged'
|
3
|
+
require 'rails'
|
4
|
+
|
5
|
+
RSpec.describe 'Logged Configuration' do
|
6
|
+
before do
|
7
|
+
class Application < Rails::Application
|
8
|
+
config.eager_load = true
|
9
|
+
|
10
|
+
config.logged.enabled = true
|
11
|
+
end
|
12
|
+
|
13
|
+
Rails.application.initialize!
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'enables logged' do
|
17
|
+
expect(Logged.config.enabled).to eq(true)
|
18
|
+
end
|
19
|
+
end
|
@@ -5,6 +5,10 @@ RSpec.describe Logged::Formatter::KeyValue do
|
|
5
5
|
subject { described_class.new }
|
6
6
|
|
7
7
|
it 'serializes data' do
|
8
|
-
expect(subject.call(foo: 'bar')).to eq("foo='bar'")
|
8
|
+
expect(subject.call(foo: 'bar', bar: 3.123)).to eq("foo='bar' bar=3.12")
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'ignores nil values' do
|
12
|
+
expect(subject.call(foo: 'bar', bar: nil)).to eq("foo='bar'")
|
9
13
|
end
|
10
14
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'logged'
|
3
|
+
require 'active_support/notifications'
|
4
|
+
require 'active_support/log_subscriber'
|
5
|
+
require 'action_controller/log_subscriber'
|
6
|
+
require 'action_view/log_subscriber'
|
7
|
+
require 'action_mailer/log_subscriber'
|
8
|
+
require 'active_record/log_subscriber'
|
9
|
+
|
10
|
+
RSpec.describe 'Rails log subscriber' do
|
11
|
+
after do
|
12
|
+
log_subscribers = []
|
13
|
+
|
14
|
+
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
15
|
+
events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
|
16
|
+
events.each do |event|
|
17
|
+
ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{subscriber.class.to_s.split('::').first.underscore}").each do |listener|
|
18
|
+
delegate = listener.instance_variable_get('@delegate')
|
19
|
+
log_subscribers << subscriber.class if delegate == subscriber
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
ActionController::LogSubscriber.attach_to :action_controller unless log_subscribers.include?(ActionController::LogSubscriber)
|
25
|
+
ActionView::LogSubscriber.attach_to :action_view unless log_subscribers.include?(ActionView::LogSubscriber)
|
26
|
+
ActionMailer::LogSubscriber.attach_to :action_mailer unless log_subscribers.include?(ActionMailer::LogSubscriber)
|
27
|
+
ActiveRecord::LogSubscriber.attach_to :active_record unless log_subscribers.include?(ActiveRecord::LogSubscriber)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'is removed for action_controller events' do
|
31
|
+
expect {
|
32
|
+
Logged.remove_rails_subscriber(:action_controller)
|
33
|
+
}.to change {
|
34
|
+
ActiveSupport::Notifications.notifier.listeners_for('process_action.action_controller')
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'is removed for action_view events' do
|
39
|
+
expect {
|
40
|
+
Logged.remove_rails_subscriber(:action_view)
|
41
|
+
}.to change {
|
42
|
+
ActiveSupport::Notifications.notifier.listeners_for('render_template.action_view')
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'is removed for action_mailer events' do
|
47
|
+
expect {
|
48
|
+
Logged.remove_rails_subscriber(:action_mailer)
|
49
|
+
}.to change {
|
50
|
+
ActiveSupport::Notifications.notifier.listeners_for('deliver.action_mailer')
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'is removed for active_record events' do
|
55
|
+
expect {
|
56
|
+
Logged.remove_rails_subscriber(:active_record)
|
57
|
+
}.to change {
|
58
|
+
ActiveSupport::Notifications.notifier.listeners_for('sql.active_record')
|
59
|
+
}
|
60
|
+
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logged
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Schwab
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,42 +16,62 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.9'
|
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
|
-
version: '1.
|
26
|
+
version: '1.9'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '10.
|
33
|
+
version: '10.4'
|
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: '10.
|
40
|
+
version: '10.4'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
47
|
+
version: '3.2'
|
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: '3.
|
54
|
+
version: '3.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.0'
|
62
|
+
- - "<"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '5.0'
|
65
|
+
type: :development
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '4.0'
|
72
|
+
- - "<"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '5.0'
|
55
75
|
- !ruby/object:Gem::Dependency
|
56
76
|
name: actionpack
|
57
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,6 +183,7 @@ files:
|
|
163
183
|
- ".rspec"
|
164
184
|
- ".rubocop.yml"
|
165
185
|
- ".travis.yml"
|
186
|
+
- CHANGELOG.md
|
166
187
|
- Gemfile
|
167
188
|
- LICENSE.txt
|
168
189
|
- README.md
|
@@ -184,13 +205,16 @@ files:
|
|
184
205
|
- lib/logged/logger.rb
|
185
206
|
- lib/logged/rack/logger.rb
|
186
207
|
- lib/logged/railtie.rb
|
208
|
+
- lib/logged/subscriptions.rb
|
187
209
|
- lib/logged/tagged_logging.rb
|
188
210
|
- lib/logged/version.rb
|
189
211
|
- logged.gemspec
|
212
|
+
- spec/config_spec.rb
|
190
213
|
- spec/formatter/json_spec.rb
|
191
214
|
- spec/formatter/key_value_spec.rb
|
192
215
|
- spec/formatter/raw_spec.rb
|
193
|
-
- spec/
|
216
|
+
- spec/formatter/single_key_spec.rb
|
217
|
+
- spec/removes_rails_log_subscribers_spec.rb
|
194
218
|
- spec/spec_helper.rb
|
195
219
|
homepage: https://github.com/ydkn/logged
|
196
220
|
licenses:
|
@@ -212,14 +236,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
236
|
version: '0'
|
213
237
|
requirements: []
|
214
238
|
rubyforge_project:
|
215
|
-
rubygems_version: 2.4.
|
239
|
+
rubygems_version: 2.4.8
|
216
240
|
signing_key:
|
217
241
|
specification_version: 4
|
218
242
|
summary: Better logging for rails
|
219
243
|
test_files:
|
244
|
+
- spec/config_spec.rb
|
220
245
|
- spec/formatter/json_spec.rb
|
221
246
|
- spec/formatter/key_value_spec.rb
|
222
247
|
- spec/formatter/raw_spec.rb
|
223
|
-
- spec/
|
248
|
+
- spec/formatter/single_key_spec.rb
|
249
|
+
- spec/removes_rails_log_subscribers_spec.rb
|
224
250
|
- spec/spec_helper.rb
|
225
251
|
has_rdoc:
|
data/spec/logged_spec.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'logged'
|
3
|
-
require 'active_support/notifications'
|
4
|
-
require 'active_support/log_subscriber'
|
5
|
-
require 'action_controller/log_subscriber'
|
6
|
-
require 'action_view/log_subscriber'
|
7
|
-
require 'action_mailer/log_subscriber'
|
8
|
-
require 'active_record/log_subscriber'
|
9
|
-
|
10
|
-
RSpec.describe Logged do
|
11
|
-
context 'when removing Rails log subscribers' do
|
12
|
-
after do
|
13
|
-
log_subscribers = []
|
14
|
-
|
15
|
-
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
16
|
-
events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
|
17
|
-
events.each do |event|
|
18
|
-
ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{subscriber.class.to_s.split('::').first.underscore}").each do |listener|
|
19
|
-
delegate = listener.instance_variable_get('@delegate')
|
20
|
-
log_subscribers << subscriber.class if delegate == subscriber
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
ActionController::LogSubscriber.attach_to :action_controller unless log_subscribers.include?(ActionController::LogSubscriber)
|
26
|
-
ActionView::LogSubscriber.attach_to :action_view unless log_subscribers.include?(ActionView::LogSubscriber)
|
27
|
-
ActionMailer::LogSubscriber.attach_to :action_mailer unless log_subscribers.include?(ActionMailer::LogSubscriber)
|
28
|
-
ActiveRecord::LogSubscriber.attach_to :active_record unless log_subscribers.include?(ActiveRecord::LogSubscriber)
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'removes subscribers for action_controller events' do
|
32
|
-
expect {
|
33
|
-
Logged.remove_rails_subscriber(:action_controller)
|
34
|
-
}.to change {
|
35
|
-
ActiveSupport::Notifications.notifier.listeners_for('process_action.action_controller')
|
36
|
-
}
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'removes subscribers for action_view events' do
|
40
|
-
expect {
|
41
|
-
Logged.remove_rails_subscriber(:action_view)
|
42
|
-
}.to change {
|
43
|
-
ActiveSupport::Notifications.notifier.listeners_for('render_template.action_view')
|
44
|
-
}
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'removes subscribers for action_mailer events' do
|
48
|
-
expect {
|
49
|
-
Logged.remove_rails_subscriber(:action_mailer)
|
50
|
-
}.to change {
|
51
|
-
ActiveSupport::Notifications.notifier.listeners_for('deliver.action_mailer')
|
52
|
-
}
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'removes subscribers for active_record events' do
|
56
|
-
expect {
|
57
|
-
Logged.remove_rails_subscriber(:active_record)
|
58
|
-
}.to change {
|
59
|
-
ActiveSupport::Notifications.notifier.listeners_for('sql.active_record')
|
60
|
-
}
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|