logged 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|