multiple_devices_logger 2.0.3 → 3.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8c8875aa3e930caeabc8f1da4e1b29e0c0048fcc
4
- data.tar.gz: 94dc37b500f66c4ee3cf466085baf6b8a4062cf2
3
+ metadata.gz: 6708c589f3a3ac88b3b7895fb81e80aaa8599edd
4
+ data.tar.gz: 0b9f4e45464595ab9b198891e117f0acb8627eeb
5
5
  SHA512:
6
- metadata.gz: 06dd0de6cfffb45e360626b98b974e4aff73980b72e64efe9048dc7b0e195c6d82d4abcc2e79b822e39e1efcd0d021496a1011dc8540eb45343a0f001d160044
7
- data.tar.gz: 9c5d2050463dad9d124114c479b4b39a4c4444628bc337c3018272558c772983ea3de512c283d19f5cd17122720d4ca861d3c747ee0509557f0c73572c1ab19f
6
+ metadata.gz: 2f4c34cf95f793e7c9b50f074768c6ce6de61585c66031c4dc95b318557342894dddf935969b7a1496a1758b62cb20d653ed8be304d4b97b3889dbad7d913914
7
+ data.tar.gz: '06678bb8a215a876a1df0da0f7587f6449c86142edc20e5bb84946604f302797023a76f26e0acfd943faaf92b5e8f4afc53ba80ee213a33fa313bd62989b673a'
data/README.mdown CHANGED
@@ -79,6 +79,21 @@ logger.add_device(STDERR, :debug, formatter: -> (severity, time, progname, messa
79
79
 
80
80
  Otherwise default formatter is used.
81
81
 
82
+ ### Ignore exceptions from logging
83
+
84
+ You can ignore some exceptions to be logged globally:
85
+
86
+ ```ruby
87
+ logger.ignore_exceptions(IOError, ArgumentError)
88
+ ```
89
+
90
+ Or just for some devices with `:ignore_exceptions` otpion when you register
91
+ the device:
92
+
93
+ ```ruby
94
+ logger.add_device(STDERR, :debug, ignore_exceptions: [IOError, ArgumentError])
95
+ ```
96
+
82
97
  ## Executing test suite
83
98
 
84
99
  This project is fully tested with [Rspec 3](http://github.com/rspec/rspec).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.3
1
+ 3.0.0
@@ -1,3 +1,5 @@
1
+ require 'active_support/core_ext/module'
2
+ require 'active_support/core_ext/string'
1
3
  require 'logger'
2
4
 
3
5
  class MultipleDevicesLogger < Logger
@@ -30,7 +32,9 @@ class MultipleDevicesLogger < Logger
30
32
  progname = self.progname
31
33
  end
32
34
  end
35
+ return false if exception_ignored?(message)
33
36
  devices_for(severity).each do |device|
37
+ next if device.exception_ignored?(message)
34
38
  formatter = device.formatter || self.formatter || @default_formatter
35
39
  device.write(formatter.call(format_severity(severity), Time.now, progname, message))
36
40
  end
@@ -46,8 +50,10 @@ class MultipleDevicesLogger < Logger
46
50
  formatter = options.delete(:formatter)
47
51
  raise ArgumentError.new("Formatter must respond to #call, #{formatter.inspect} given") unless formatter.respond_to?(:call)
48
52
  end
53
+ ignored_exceptions = options.delete(:ignore_exceptions)
49
54
  device = LogDevice.new(device, options) unless device.is_a?(Logger::LogDevice)
50
55
  device.formatter = formatter
56
+ device.ignore_exceptions(ignored_exceptions) if ignored_exceptions.present?
51
57
  if severities.empty?
52
58
  keys = SEVERITIES.values
53
59
  else
@@ -109,3 +115,8 @@ class Logger::LogDevice
109
115
  attr_accessor :formatter
110
116
 
111
117
  end
118
+
119
+ require 'multiple_devices_logger/ignore_exceptions'
120
+
121
+ MultipleDevicesLogger.send(:include, MultipleDevicesLogger::IgnoreExceptions)
122
+ Logger::LogDevice.send(:include, MultipleDevicesLogger::IgnoreExceptions)
@@ -0,0 +1,30 @@
1
+ class MultipleDevicesLogger
2
+
3
+ module IgnoreExceptions
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ def exception_ignored?(exception)
8
+ exception.is_a?(Exception) && ignored_exception_classes.any? do |klass|
9
+ exception.is_a?(klass)
10
+ end
11
+ end
12
+
13
+ def ignore_exceptions(*classes)
14
+ @ignored_exception_class_names ||= []
15
+ [classes].flatten.each do |class_name|
16
+ klass = class_name.is_a?(Class) ? class_name : class_name.to_s.presence.try(:constantize)
17
+ raise("Invalid exception class: #{class_name.inspect}") unless klass.is_a?(Class) && (klass == Exception || (klass < Exception))
18
+ @ignored_exception_class_names << klass.name
19
+ end
20
+ @ignored_exception_class_names.uniq!
21
+ nil
22
+ end
23
+
24
+ def ignored_exception_classes
25
+ (@ignored_exception_class_names || []).map(&:constantize)
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -15,6 +15,8 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.required_ruby_version = '>= 2.0.0'
17
17
 
18
+ s.add_dependency 'activesupport', '>= 5.0.0', '< 5.2.0'
19
+
18
20
  s.add_development_dependency 'byebug', '>= 9.0.0', '< 10.0.0'
19
21
  s.add_development_dependency 'rake', '>= 12.0.0', '< 13.0.0'
20
22
  s.add_development_dependency 'rspec', '>= 3.5.0', '< 3.6.0'
metadata CHANGED
@@ -1,15 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multiple_devices_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Toulotte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-18 00:00:00.000000000 Z
11
+ date: 2017-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 5.0.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 5.2.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 5.0.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 5.2.0
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: byebug
15
35
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +100,7 @@ files:
80
100
  - README.mdown
81
101
  - VERSION
82
102
  - lib/multiple_devices_logger.rb
103
+ - lib/multiple_devices_logger/ignore_exceptions.rb
83
104
  - multiple_devices_logger.gemspec
84
105
  homepage: https://github.com/alexistoulotte/multiple_devices_logger
85
106
  licenses: