hatchet 0.0.12 → 0.0.13
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.
- data/lib/hatchet/configuration.rb +10 -0
- data/lib/hatchet/level_manager.rb +35 -7
- data/lib/hatchet/version.rb +1 -1
- data/spec/configuration_spec.rb +13 -0
- data/spec/level_manager_spec.rb +8 -0
- metadata +3 -3
|
@@ -90,6 +90,16 @@ module Hatchet
|
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
92
|
|
|
93
|
+
# Internal: Removes the caching Hash of every appender so that they will all
|
|
94
|
+
# be re-initialized.
|
|
95
|
+
#
|
|
96
|
+
# Used when a change to logging levels is made so that the caches will not
|
|
97
|
+
# contain stale values.
|
|
98
|
+
#
|
|
99
|
+
def clear_levels_cache!
|
|
100
|
+
appenders.each(&:clear_levels_cache!)
|
|
101
|
+
end
|
|
102
|
+
|
|
93
103
|
end
|
|
94
104
|
|
|
95
105
|
end
|
|
@@ -7,7 +7,7 @@ module Hatchet
|
|
|
7
7
|
#
|
|
8
8
|
module LevelManager
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
# Internal: All the possible levels of log filter in order of severity.
|
|
11
11
|
#
|
|
12
12
|
LEVELS = [:debug, :info, :warn, :error, :fatal, :off]
|
|
13
13
|
|
|
@@ -24,6 +24,7 @@ module Hatchet
|
|
|
24
24
|
# Returns nothing.
|
|
25
25
|
def levels=(levels)
|
|
26
26
|
@levels = levels
|
|
27
|
+
clear_levels_cache!
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
# Public: Set the lowest level of message to log for the given context.
|
|
@@ -31,13 +32,23 @@ module Hatchet
|
|
|
31
32
|
# level - The lowest level of message to log for the given context.
|
|
32
33
|
# context - The context that level applies to (default: nil).
|
|
33
34
|
#
|
|
34
|
-
# Setting a level for nil
|
|
35
|
+
# Setting a level for nil sets the default level for all contexts that have
|
|
35
36
|
# not been specified.
|
|
36
37
|
#
|
|
37
38
|
# Returns nothing.
|
|
38
39
|
def level(level, context = nil)
|
|
39
40
|
context = context.to_s unless context.nil?
|
|
40
41
|
self.levels[context] = level
|
|
42
|
+
clear_levels_cache!
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Public: Set the lowest level of message to log by default.
|
|
46
|
+
#
|
|
47
|
+
# level - The lowest level of message to log by default.
|
|
48
|
+
#
|
|
49
|
+
# Returns nothing.
|
|
50
|
+
def level=(level)
|
|
51
|
+
self.level(level)
|
|
41
52
|
end
|
|
42
53
|
|
|
43
54
|
# Internal: Returns true if the appender is configured to log messages of
|
|
@@ -50,17 +61,34 @@ module Hatchet
|
|
|
50
61
|
# level within the given context, otherwise returns false.
|
|
51
62
|
#
|
|
52
63
|
def enabled?(level, context)
|
|
53
|
-
unless self.
|
|
54
|
-
lvl = self.
|
|
64
|
+
unless self.levels_cache.key? context
|
|
65
|
+
lvl = self.levels_cache[nil]
|
|
55
66
|
root = []
|
|
56
67
|
context.to_s.split('::').each do |part|
|
|
57
68
|
root << part
|
|
58
69
|
path = root.join '::'
|
|
59
|
-
lvl = self.
|
|
70
|
+
lvl = self.levels_cache[path] if self.levels_cache.key? path
|
|
60
71
|
end
|
|
61
|
-
self.
|
|
72
|
+
self.levels_cache[context] = lvl
|
|
62
73
|
end
|
|
63
|
-
LEVELS.index(level) >= LEVELS.index(self.
|
|
74
|
+
LEVELS.index(level) >= LEVELS.index(self.levels_cache[context])
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Internal: Returns a lazily duplicated Hash from the levels Hash which is
|
|
78
|
+
# used to store the calculated logging level for specific contexts to make
|
|
79
|
+
# subsequent lookups more efficient.
|
|
80
|
+
#
|
|
81
|
+
def levels_cache
|
|
82
|
+
@_levels_cache ||= self.levels.dup
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Internal: Removes the caching Hash so that it will be re-initialized.
|
|
86
|
+
#
|
|
87
|
+
# Used when a change to logging levels is made so that the cache will not
|
|
88
|
+
# contain stale values.
|
|
89
|
+
#
|
|
90
|
+
def clear_levels_cache!
|
|
91
|
+
@_levels_cache = nil
|
|
64
92
|
end
|
|
65
93
|
|
|
66
94
|
end
|
data/lib/hatchet/version.rb
CHANGED
data/spec/configuration_spec.rb
CHANGED
|
@@ -91,6 +91,19 @@ describe 'configuration' do
|
|
|
91
91
|
it 'set to info' do
|
|
92
92
|
assert appender.levels[nil] == :info
|
|
93
93
|
end
|
|
94
|
+
|
|
95
|
+
describe "when changed the appender's reflect that change" do
|
|
96
|
+
before do
|
|
97
|
+
assert appender.enabled?(:info, 'Foo')
|
|
98
|
+
Hatchet.configure do |config|
|
|
99
|
+
config.level = :fatal
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it 'should no longer have info enabled' do
|
|
104
|
+
refute appender.enabled?(:info, 'Foo')
|
|
105
|
+
end
|
|
106
|
+
end
|
|
94
107
|
end
|
|
95
108
|
|
|
96
109
|
describe 'everything wires up' do
|
data/spec/level_manager_spec.rb
CHANGED
|
@@ -60,6 +60,14 @@ describe LevelManager do
|
|
|
60
60
|
assert @manager.enabled?(:info, 'Foo')
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
|
+
|
|
64
|
+
describe 'altering the default level' do
|
|
65
|
+
it 'alters the enabled level for subsequent calls' do
|
|
66
|
+
assert @manager.enabled?(:info, 'Foo::Bar')
|
|
67
|
+
@manager.level = :fatal
|
|
68
|
+
refute @manager.enabled?(:info, 'Foo::Bar')
|
|
69
|
+
end
|
|
70
|
+
end
|
|
63
71
|
end
|
|
64
72
|
end
|
|
65
73
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hatchet
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.13
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-
|
|
12
|
+
date: 2012-08-05 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
14
|
description: Logging library that provides the ability to add class/module specific
|
|
15
15
|
filters
|
|
@@ -65,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
65
65
|
version: '0'
|
|
66
66
|
requirements: []
|
|
67
67
|
rubyforge_project:
|
|
68
|
-
rubygems_version: 1.8.
|
|
68
|
+
rubygems_version: 1.8.24
|
|
69
69
|
signing_key:
|
|
70
70
|
specification_version: 3
|
|
71
71
|
summary: Logging library that provides the ability to add class/module specific filters
|