logged 0.0.2 → 0.0.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 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