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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NzkzZTc1YzFhN2YzOWFjMTUxMTk1M2M2ZTc3OGYzY2U1YWFjYmUyYg==
5
- data.tar.gz: !binary |-
6
- ZDViZWY4Yjc4ZjZlMmUwN2ZkNmIxNzFjMDE4YjYzNjhiYTNmOGE1MA==
2
+ SHA1:
3
+ metadata.gz: e1310ea50fa310d62926eaae95e14a43d10a6ef1
4
+ data.tar.gz: d0534cb21b89cb1ed6541acf6900f80b3ad2a82c
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZTM4Mjc3NzE4Zjc1NzRkYTY4NmZmMWZjNGE0MTI2ODBkMzJhYjdiOGVlNTcw
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
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.1.5
5
+ - 2.2.1
6
+
7
+ gemfile:
8
+ - Gemfile
9
+
10
+ script: bundle exec rake spec
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.
@@ -1,3 +1,4 @@
1
+ require 'active_support'
1
2
  require 'action_dispatch/http/request'
2
3
 
3
4
  module Logged
@@ -1,4 +1,4 @@
1
1
  module Logged
2
2
  # Version
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
4
4
  end
data/lib/logged.rb CHANGED
@@ -18,197 +18,197 @@ module Logged
18
18
 
19
19
  mattr_accessor :app, :config
20
20
 
21
- # setup logged
22
- def self.setup(app)
23
- self.app = app
24
- self.config = app.config.logged
21
+ class << self
25
22
 
26
- app.config.middleware.insert_after ::Rails::Rack::Logger, Logged::Rack::Logger
23
+ # setup logged
24
+ def setup(app)
25
+ self.app = app
26
+ self.config = app.config.logged
27
27
 
28
- components.each do |component|
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
- next unless config[component].enabled
30
+ components.each do |component|
31
+ remove_rails_subscriber(component) if config[component].disable_rails_logging
32
32
 
33
- enable_component(component)
33
+ next unless config[component].enabled
34
+
35
+ enable_component(component)
36
+ end
34
37
  end
35
- end
36
38
 
37
- # default log level
38
- def self.default_level
39
- config.level || :info
40
- end
39
+ # default log level
40
+ def default_level
41
+ config.level || :info
42
+ end
41
43
 
42
- # default log formatter
43
- def self.default_formatter
44
- config.formatter || (@default_formatter ||= Logged::Formatter::KeyValue.new)
45
- end
44
+ # default log formatter
45
+ def default_formatter
46
+ config.formatter || (@default_formatter ||= Logged::Formatter::KeyValue.new)
47
+ end
46
48
 
47
- # logger wrapper for component
48
- def self.logger_by_component(component)
49
- return nil unless config.enabled
49
+ # logger wrapper for component
50
+ def logger_by_component(component)
51
+ return nil unless config.enabled
50
52
 
51
- key = "component_#{component}"
53
+ key = "component_#{component}"
52
54
 
53
- return @component_loggers[key] if @component_loggers.key?(key)
55
+ return @component_loggers[key] if @component_loggers.key?(key)
54
56
 
55
- loggers = loggers_for(component)
57
+ loggers = loggers_for(component)
56
58
 
57
- if loggers.blank?
58
- @component_loggers[key] = nil
59
+ if loggers.blank?
60
+ @component_loggers[key] = nil
59
61
 
60
- return nil
61
- end
62
+ return nil
63
+ end
62
64
 
63
- formatter = config[component].formatter || default_formatter
65
+ formatter = config[component].formatter || default_formatter
64
66
 
65
- @component_loggers[key] = Logger.new(loggers, component, formatter)
66
- end
67
+ @component_loggers[key] = Logger.new(loggers, component, formatter)
68
+ end
69
+ alias :'[]' :logger_by_component
67
70
 
68
- # loggers for component
69
- def self.loggers_for(component)
70
- loggers_from_config(config)
71
- .merge(loggers_from_config(config[component]))
72
- end
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
- def self.[](component)
75
- loggers_for(component)
76
- end
77
+ # loggers from config level
78
+ def loggers_from_config(conf)
79
+ loggers = {}
77
80
 
78
- # loggers from config level
79
- def self.loggers_from_config(conf)
80
- loggers = {}
81
+ return loggers unless conf.enabled
81
82
 
82
- return loggers unless conf.enabled
83
+ conf.loggers.each do |name, c|
84
+ logger, options = load_logger(name, c)
83
85
 
84
- conf.loggers.each do |name, c|
85
- logger, options = load_logger(name, c)
86
+ next unless logger && options
86
87
 
87
- next unless logger && options
88
+ loggers[logger] = options
89
+ end
88
90
 
89
- loggers[logger] = options
91
+ loggers
90
92
  end
91
93
 
92
- loggers
93
- end
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
- options = conf.dup
100
- options[:name] = name
98
+ options = conf.dup
99
+ options[:name] = name
101
100
 
102
- logger = options.delete(:logger)
101
+ logger = options.delete(:logger)
103
102
 
104
- logger = Rails.logger if logger == :rails
103
+ logger = Rails.logger if logger == :rails
105
104
 
106
- return [nil, nil] unless logger
105
+ return [nil, nil] unless logger
107
106
 
108
- [logger, options]
109
- end
107
+ [logger, options]
108
+ end
110
109
 
111
- # configure and enable component
112
- def self.enable_component(component)
113
- loggers = loggers_for(component)
110
+ # configure and enable component
111
+ def enable_component(component)
112
+ loggers = loggers_for(component)
114
113
 
115
- loggers.each do |logger, options|
116
- level = options[:level] || config[component].level || default_level
114
+ loggers.each do |logger, options|
115
+ level = options[:level] || config[component].level || default_level
117
116
 
118
- logger.level = level_to_const(level) if logger.respond_to?(:'level=')
119
- end
117
+ logger.level = level_to_const(level) if logger.respond_to?(:'level=')
118
+ end
120
119
 
121
- # only attach subscribers with loggers
122
- if loggers.any?
123
- @subscribers[component].each do |subscriber|
124
- subscriber.attach_to(component)
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
- # check if event should be ignored
130
- def self.ignore?(conf, event)
131
- return false unless event
132
- return false unless conf.enabled
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
- if !event.is_a?(String) && conf.ignore.is_a?(Array)
135
- return true if conf.ignore.include?(event.name)
136
- end
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
- if conf.custom_ignore.respond_to?(:call)
139
- return conf.custom_ignore.call(event)
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
- false
143
- end
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
- # run data callbacks
146
- def self.custom_data(conf, event, data)
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
- conf.custom_data.call(event, data)
151
- end
152
+ # configured components
153
+ def components
154
+ config.keys - CONFIG_KEYS
155
+ end
152
156
 
153
- # configured components
154
- def self.components
155
- config.keys - CONFIG_KEYS
156
- end
157
+ # remove rails log subscriber by component name
158
+ def remove_rails_subscriber(component)
159
+ subscriber = rails_subscriber(component)
157
160
 
158
- # remove rails log subscriber by component name
159
- def self.remove_rails_subscriber(component)
160
- subscriber = rails_subscriber(component)
161
+ return unless subscriber
161
162
 
162
- return unless subscriber
163
+ unsubscribe(component, subscriber)
164
+ end
163
165
 
164
- unsubscribe(component, subscriber)
165
- end
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
- # try to guess and get rails log subscriber by component name
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
- return unless Object.const_defined?(class_name)
172
+ clazz = class_name.constantize
172
173
 
173
- clazz = class_name.constantize
174
+ ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
175
+ return subscriber if subscriber.is_a?(clazz)
176
+ end
174
177
 
175
- ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
176
- return subscriber if subscriber.is_a?(clazz)
178
+ nil
177
179
  end
178
180
 
179
- nil
180
- end
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
- # unsubscribe a subscriber from a component
183
- def self.unsubscribe(component, subscriber)
184
- events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
185
-
186
- events.each do |event|
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
- # register log subscriber with logged
196
- def self.register(component, subscriber)
197
- return if @subscribers[component].include?(subscriber)
194
+ # register log subscriber with logged
195
+ def register(component, subscriber)
196
+ return if @subscribers[component].include?(subscriber)
198
197
 
199
- @subscribers[component] << subscriber
200
- end
198
+ @subscribers[component] << subscriber
199
+ end
201
200
 
202
- def self.request_env
203
- Thread.current[:logged_request_env]
204
- end
201
+ def request_env
202
+ Thread.current[:logged_request_env]
203
+ end
205
204
 
206
- private
205
+ private
207
206
 
208
- def self.init
209
- @subscribers ||= Hash.new { |hash, key| hash[key] = [] }
207
+ def init
208
+ @subscribers ||= Hash.new { |hash, key| hash[key] = [] }
210
209
 
211
- @component_loggers = {}
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.2
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: 2014-11-25 00:00:00.000000000 Z
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.4
215
+ rubygems_version: 2.4.6
215
216
  signing_key:
216
217
  specification_version: 4
217
218
  summary: Better logging for rails