logged 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.travis.yml +10 -0
- data/README.md +5 -0
- data/lib/logged/rack/logger.rb +1 -0
- data/lib/logged/version.rb +1 -1
- data/lib/logged.rb +129 -129
- data/logged.gemspec +1 -1
- metadata +36 -35
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZDViZWY4Yjc4ZjZlMmUwN2ZkNmIxNzFjMDE4YjYzNjhiYTNmOGE1MA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e1310ea50fa310d62926eaae95e14a43d10a6ef1
|
4
|
+
data.tar.gz: d0534cb21b89cb1ed6541acf6900f80b3ad2a82c
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NWQ5ODlhMTcxZTIyNjg0OGI3NTU0YzNkMDU5ZWY3MjYzNjViNTk2NjQyZWU5
|
11
|
-
YmY2ZDNjNjRlMjdjYTZmYjE0OGUxMTU1ODgyOWI1MDFiNmEzMTg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NjE0YWQ0MjRmZWFjNmQyMTFiNTA3ZGQ3ZTljZTQ0MmExN2NhOTljYmJjNTdj
|
14
|
-
YWMxMzM5ZThhNmIyYjZiMTIwMjhkZTNiMDA2ZjAyMWJjYzlmMzc0ZjUwMTYy
|
15
|
-
NjcwYTY4MWQ0OWNmYTgzODlkZTA2Mzg3ZWRiNWFiY2I2NDZkMmM=
|
6
|
+
metadata.gz: 3cd4a66ffaa38f73b68f58118945efd6d1e8b006b0094780ccb1b0951c74e2175def1fa6c95281aab9d041238be5ed1e92b2b0fc38a0282a0696a6e3bc257a2a
|
7
|
+
data.tar.gz: 16a667469a85584ba4656e37441d21396535ee3da00945e0a6ca3bc2fbe5f16ac24b210f08f97860d60aedda7fbc045e6ce2e1d58c814630fd34e5c47e1d0e3a
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
[![Gem Version](https://img.shields.io/gem/v/logged.svg)](https://rubygems.org/gems/logged)
|
2
|
+
[![Dependencies](https://img.shields.io/gemnasium/ydkn/logged.svg)](https://gemnasium.com/ydkn/logged)
|
3
|
+
[![Travis CI](https://img.shields.io/travis/ydkn/logged.svg)](https://travis-ci.org/ydkn/logged)
|
4
|
+
[![Code Climate](https://img.shields.io/codeclimate/github/ydkn/logged.svg)](https://codeclimate.com/github/ydkn/logged)
|
5
|
+
|
1
6
|
# logged: configurable Rails logging
|
2
7
|
|
3
8
|
Logged tries to make managing logging with Rails easier.
|
data/lib/logged/rack/logger.rb
CHANGED
data/lib/logged/version.rb
CHANGED
data/lib/logged.rb
CHANGED
@@ -18,197 +18,197 @@ module Logged
|
|
18
18
|
|
19
19
|
mattr_accessor :app, :config
|
20
20
|
|
21
|
-
|
22
|
-
def self.setup(app)
|
23
|
-
self.app = app
|
24
|
-
self.config = app.config.logged
|
21
|
+
class << self
|
25
22
|
|
26
|
-
|
23
|
+
# setup logged
|
24
|
+
def setup(app)
|
25
|
+
self.app = app
|
26
|
+
self.config = app.config.logged
|
27
27
|
|
28
|
-
|
29
|
-
remove_rails_subscriber(component) if config[component].disable_rails_logging
|
28
|
+
app.config.middleware.insert_after ::Rails::Rack::Logger, Logged::Rack::Logger
|
30
29
|
|
31
|
-
|
30
|
+
components.each do |component|
|
31
|
+
remove_rails_subscriber(component) if config[component].disable_rails_logging
|
32
32
|
|
33
|
-
|
33
|
+
next unless config[component].enabled
|
34
|
+
|
35
|
+
enable_component(component)
|
36
|
+
end
|
34
37
|
end
|
35
|
-
end
|
36
38
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
# default log level
|
40
|
+
def default_level
|
41
|
+
config.level || :info
|
42
|
+
end
|
41
43
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
44
|
+
# default log formatter
|
45
|
+
def default_formatter
|
46
|
+
config.formatter || (@default_formatter ||= Logged::Formatter::KeyValue.new)
|
47
|
+
end
|
46
48
|
|
47
|
-
|
48
|
-
|
49
|
-
|
49
|
+
# logger wrapper for component
|
50
|
+
def logger_by_component(component)
|
51
|
+
return nil unless config.enabled
|
50
52
|
|
51
|
-
|
53
|
+
key = "component_#{component}"
|
52
54
|
|
53
|
-
|
55
|
+
return @component_loggers[key] if @component_loggers.key?(key)
|
54
56
|
|
55
|
-
|
57
|
+
loggers = loggers_for(component)
|
56
58
|
|
57
|
-
|
58
|
-
|
59
|
+
if loggers.blank?
|
60
|
+
@component_loggers[key] = nil
|
59
61
|
|
60
|
-
|
61
|
-
|
62
|
+
return nil
|
63
|
+
end
|
62
64
|
|
63
|
-
|
65
|
+
formatter = config[component].formatter || default_formatter
|
64
66
|
|
65
|
-
|
66
|
-
|
67
|
+
@component_loggers[key] = Logger.new(loggers, component, formatter)
|
68
|
+
end
|
69
|
+
alias :'[]' :logger_by_component
|
67
70
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
71
|
+
# loggers for component
|
72
|
+
def loggers_for(component)
|
73
|
+
loggers_from_config(config)
|
74
|
+
.merge(loggers_from_config(config[component]))
|
75
|
+
end
|
73
76
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
+
# loggers from config level
|
78
|
+
def loggers_from_config(conf)
|
79
|
+
loggers = {}
|
77
80
|
|
78
|
-
|
79
|
-
def self.loggers_from_config(conf)
|
80
|
-
loggers = {}
|
81
|
+
return loggers unless conf.enabled
|
81
82
|
|
82
|
-
|
83
|
+
conf.loggers.each do |name, c|
|
84
|
+
logger, options = load_logger(name, c)
|
83
85
|
|
84
|
-
|
85
|
-
logger, options = load_logger(name, c)
|
86
|
+
next unless logger && options
|
86
87
|
|
87
|
-
|
88
|
+
loggers[logger] = options
|
89
|
+
end
|
88
90
|
|
89
|
-
loggers
|
91
|
+
loggers
|
90
92
|
end
|
91
93
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
# load logger from configuration
|
96
|
-
def self.load_logger(name, conf)
|
97
|
-
return [nil, nil] unless conf.enabled
|
94
|
+
# load logger from configuration
|
95
|
+
def load_logger(name, conf)
|
96
|
+
return [nil, nil] unless conf.enabled
|
98
97
|
|
99
|
-
|
100
|
-
|
98
|
+
options = conf.dup
|
99
|
+
options[:name] = name
|
101
100
|
|
102
|
-
|
101
|
+
logger = options.delete(:logger)
|
103
102
|
|
104
|
-
|
103
|
+
logger = Rails.logger if logger == :rails
|
105
104
|
|
106
|
-
|
105
|
+
return [nil, nil] unless logger
|
107
106
|
|
108
|
-
|
109
|
-
|
107
|
+
[logger, options]
|
108
|
+
end
|
110
109
|
|
111
|
-
|
112
|
-
|
113
|
-
|
110
|
+
# configure and enable component
|
111
|
+
def enable_component(component)
|
112
|
+
loggers = loggers_for(component)
|
114
113
|
|
115
|
-
|
116
|
-
|
114
|
+
loggers.each do |logger, options|
|
115
|
+
level = options[:level] || config[component].level || default_level
|
117
116
|
|
118
|
-
|
119
|
-
|
117
|
+
logger.level = level_to_const(level) if logger.respond_to?(:'level=')
|
118
|
+
end
|
120
119
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
120
|
+
# only attach subscribers with loggers
|
121
|
+
if loggers.any?
|
122
|
+
@subscribers[component].each do |subscriber|
|
123
|
+
subscriber.attach_to(component)
|
124
|
+
end
|
125
125
|
end
|
126
126
|
end
|
127
|
-
end
|
128
127
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
128
|
+
# check if event should be ignored
|
129
|
+
def ignore?(conf, event)
|
130
|
+
return false unless event
|
131
|
+
return false unless conf.enabled
|
133
132
|
|
134
|
-
|
135
|
-
|
136
|
-
|
133
|
+
if !event.is_a?(String) && conf.ignore.is_a?(Array)
|
134
|
+
return true if conf.ignore.include?(event.name)
|
135
|
+
end
|
137
136
|
|
138
|
-
|
139
|
-
|
137
|
+
if conf.custom_ignore.respond_to?(:call)
|
138
|
+
return conf.custom_ignore.call(event)
|
139
|
+
end
|
140
|
+
|
141
|
+
false
|
140
142
|
end
|
141
143
|
|
142
|
-
|
143
|
-
|
144
|
+
# run data callbacks
|
145
|
+
def custom_data(conf, event, data)
|
146
|
+
return data unless conf.enabled
|
147
|
+
return data unless conf.custom_data.respond_to?(:call)
|
144
148
|
|
145
|
-
|
146
|
-
|
147
|
-
return data unless conf.enabled
|
148
|
-
return data unless conf.custom_data.respond_to?(:call)
|
149
|
+
conf.custom_data.call(event, data)
|
150
|
+
end
|
149
151
|
|
150
|
-
|
151
|
-
|
152
|
+
# configured components
|
153
|
+
def components
|
154
|
+
config.keys - CONFIG_KEYS
|
155
|
+
end
|
152
156
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
end
|
157
|
+
# remove rails log subscriber by component name
|
158
|
+
def remove_rails_subscriber(component)
|
159
|
+
subscriber = rails_subscriber(component)
|
157
160
|
|
158
|
-
|
159
|
-
def self.remove_rails_subscriber(component)
|
160
|
-
subscriber = rails_subscriber(component)
|
161
|
+
return unless subscriber
|
161
162
|
|
162
|
-
|
163
|
+
unsubscribe(component, subscriber)
|
164
|
+
end
|
163
165
|
|
164
|
-
|
165
|
-
|
166
|
+
# try to guess and get rails log subscriber by component name
|
167
|
+
def rails_subscriber(component)
|
168
|
+
class_name = "::#{component.to_s.camelize}::LogSubscriber"
|
166
169
|
|
167
|
-
|
168
|
-
def self.rails_subscriber(component)
|
169
|
-
class_name = "::#{component.to_s.camelize}::LogSubscriber"
|
170
|
+
return unless Object.const_defined?(class_name)
|
170
171
|
|
171
|
-
|
172
|
+
clazz = class_name.constantize
|
172
173
|
|
173
|
-
|
174
|
+
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
175
|
+
return subscriber if subscriber.is_a?(clazz)
|
176
|
+
end
|
174
177
|
|
175
|
-
|
176
|
-
return subscriber if subscriber.is_a?(clazz)
|
178
|
+
nil
|
177
179
|
end
|
178
180
|
|
179
|
-
|
180
|
-
|
181
|
+
# unsubscribe a subscriber from a component
|
182
|
+
def unsubscribe(component, subscriber)
|
183
|
+
events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
|
181
184
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
|
188
|
-
if listener.instance_variable_get('@delegate') == subscriber
|
189
|
-
ActiveSupport::Notifications.unsubscribe listener
|
185
|
+
events.each do |event|
|
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
190
|
end
|
191
191
|
end
|
192
192
|
end
|
193
|
-
end
|
194
193
|
|
195
|
-
|
196
|
-
|
197
|
-
|
194
|
+
# register log subscriber with logged
|
195
|
+
def register(component, subscriber)
|
196
|
+
return if @subscribers[component].include?(subscriber)
|
198
197
|
|
199
|
-
|
200
|
-
|
198
|
+
@subscribers[component] << subscriber
|
199
|
+
end
|
201
200
|
|
202
|
-
|
203
|
-
|
204
|
-
|
201
|
+
def request_env
|
202
|
+
Thread.current[:logged_request_env]
|
203
|
+
end
|
205
204
|
|
206
|
-
|
205
|
+
private
|
207
206
|
|
208
|
-
|
209
|
-
|
207
|
+
def init
|
208
|
+
@subscribers ||= Hash.new { |hash, key| hash[key] = [] }
|
210
209
|
|
211
|
-
|
210
|
+
@component_loggers = {}
|
211
|
+
end
|
212
212
|
end
|
213
213
|
|
214
214
|
init
|
data/logged.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.authors = ['Florian Schwab']
|
12
12
|
spec.email = ['me@ydkn.de']
|
13
13
|
spec.summary = %q(Better logging for rails)
|
14
|
-
spec.homepage = ''
|
14
|
+
spec.homepage = 'https://github.com/ydkn/logged'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0")
|
metadata
CHANGED
@@ -1,155 +1,155 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logged
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Schwab
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.7'
|
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
26
|
version: '1.7'
|
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
33
|
version: '10.0'
|
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
40
|
version: '10.0'
|
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
47
|
version: '3.1'
|
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
54
|
version: '3.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: actionpack
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '4.0'
|
62
|
-
- - <
|
62
|
+
- - "<"
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: '5.0'
|
65
65
|
type: :development
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
|
-
- -
|
69
|
+
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '4.0'
|
72
|
-
- - <
|
72
|
+
- - "<"
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '5.0'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: actionview
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- -
|
79
|
+
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '4.0'
|
82
|
-
- - <
|
82
|
+
- - "<"
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '5.0'
|
85
85
|
type: :development
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- -
|
89
|
+
- - ">="
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '4.0'
|
92
|
-
- - <
|
92
|
+
- - "<"
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '5.0'
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: actionmailer
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
|
-
- -
|
99
|
+
- - ">="
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: '4.0'
|
102
|
-
- - <
|
102
|
+
- - "<"
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '5.0'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- -
|
109
|
+
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '4.0'
|
112
|
-
- - <
|
112
|
+
- - "<"
|
113
113
|
- !ruby/object:Gem::Version
|
114
114
|
version: '5.0'
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: activerecord
|
117
117
|
requirement: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- -
|
119
|
+
- - ">="
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: '4.0'
|
122
|
-
- - <
|
122
|
+
- - "<"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '5.0'
|
125
125
|
type: :development
|
126
126
|
prerelease: false
|
127
127
|
version_requirements: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '4.0'
|
132
|
-
- - <
|
132
|
+
- - "<"
|
133
133
|
- !ruby/object:Gem::Version
|
134
134
|
version: '5.0'
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: railties
|
137
137
|
requirement: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- -
|
139
|
+
- - ">="
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: '4.0'
|
142
|
-
- - <
|
142
|
+
- - "<"
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '5.0'
|
145
145
|
type: :runtime
|
146
146
|
prerelease: false
|
147
147
|
version_requirements: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
|
-
- -
|
149
|
+
- - ">="
|
150
150
|
- !ruby/object:Gem::Version
|
151
151
|
version: '4.0'
|
152
|
-
- - <
|
152
|
+
- - "<"
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: '5.0'
|
155
155
|
description:
|
@@ -159,9 +159,10 @@ executables: []
|
|
159
159
|
extensions: []
|
160
160
|
extra_rdoc_files: []
|
161
161
|
files:
|
162
|
-
- .gitignore
|
163
|
-
- .rspec
|
164
|
-
- .rubocop.yml
|
162
|
+
- ".gitignore"
|
163
|
+
- ".rspec"
|
164
|
+
- ".rubocop.yml"
|
165
|
+
- ".travis.yml"
|
165
166
|
- Gemfile
|
166
167
|
- LICENSE.txt
|
167
168
|
- README.md
|
@@ -191,7 +192,7 @@ files:
|
|
191
192
|
- spec/formatter/raw_spec.rb
|
192
193
|
- spec/logged_spec.rb
|
193
194
|
- spec/spec_helper.rb
|
194
|
-
homepage:
|
195
|
+
homepage: https://github.com/ydkn/logged
|
195
196
|
licenses:
|
196
197
|
- MIT
|
197
198
|
metadata: {}
|
@@ -201,17 +202,17 @@ require_paths:
|
|
201
202
|
- lib
|
202
203
|
required_ruby_version: !ruby/object:Gem::Requirement
|
203
204
|
requirements:
|
204
|
-
- -
|
205
|
+
- - ">="
|
205
206
|
- !ruby/object:Gem::Version
|
206
207
|
version: '0'
|
207
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
209
|
requirements:
|
209
|
-
- -
|
210
|
+
- - ">="
|
210
211
|
- !ruby/object:Gem::Version
|
211
212
|
version: '0'
|
212
213
|
requirements: []
|
213
214
|
rubyforge_project:
|
214
|
-
rubygems_version: 2.4.
|
215
|
+
rubygems_version: 2.4.6
|
215
216
|
signing_key:
|
216
217
|
specification_version: 4
|
217
218
|
summary: Better logging for rails
|