logging 1.8.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -3
- data/History.txt +20 -0
- data/README.md +159 -0
- data/Rakefile +9 -5
- data/examples/appenders.rb +0 -4
- data/examples/layouts.rb +1 -8
- data/examples/names.rb +4 -4
- data/lib/logging.rb +24 -76
- data/lib/logging/appender.rb +71 -16
- data/lib/logging/appenders.rb +0 -2
- data/lib/logging/appenders/buffering.rb +32 -16
- data/lib/logging/appenders/file.rb +2 -2
- data/lib/logging/appenders/io.rb +1 -1
- data/lib/logging/appenders/rolling_file.rb +228 -165
- data/lib/logging/appenders/string_io.rb +1 -1
- data/lib/logging/appenders/syslog.rb +4 -4
- data/lib/logging/color_scheme.rb +20 -3
- data/lib/logging/diagnostic_context.rb +142 -17
- data/lib/logging/filter.rb +18 -0
- data/lib/logging/filters.rb +4 -0
- data/lib/logging/filters/level.rb +29 -0
- data/lib/logging/layout.rb +2 -2
- data/lib/logging/layouts/parseable.rb +5 -2
- data/lib/logging/layouts/pattern.rb +309 -168
- data/lib/logging/log_event.rb +5 -5
- data/lib/logging/logger.rb +55 -68
- data/lib/logging/repository.rb +24 -39
- data/lib/logging/root_logger.rb +1 -1
- data/lib/logging/utils.rb +4 -65
- data/lib/logging/version.rb +8 -0
- data/lib/rspec/logging_helper.rb +3 -3
- data/logging.gemspec +46 -0
- data/test/appenders/test_buffered_io.rb +29 -0
- data/test/appenders/test_file.rb +2 -2
- data/test/appenders/test_rolling_file.rb +62 -1
- data/test/layouts/test_color_pattern.rb +1 -1
- data/test/layouts/test_json.rb +3 -0
- data/test/layouts/test_pattern.rb +6 -2
- data/test/layouts/test_yaml.rb +4 -1
- data/test/test_appender.rb +56 -0
- data/test/test_filter.rb +33 -0
- data/test/test_layout.rb +4 -8
- data/test/test_log_event.rb +3 -3
- data/test/test_logger.rb +81 -57
- data/test/test_logging.rb +0 -59
- data/test/test_mapped_diagnostic_context.rb +49 -1
- data/test/test_nested_diagnostic_context.rb +16 -1
- data/test/test_repository.rb +24 -32
- data/test/test_utils.rb +14 -50
- metadata +35 -53
- data/README.rdoc +0 -143
- data/data/bad_logging_1.rb +0 -13
- data/data/bad_logging_2.rb +0 -21
- data/data/logging.rb +0 -42
- data/data/logging.yaml +0 -63
- data/data/simple_logging.rb +0 -13
- data/examples/consolidation.rb +0 -83
- data/lib/logging/appenders/email.rb +0 -178
- data/lib/logging/appenders/growl.rb +0 -200
- data/lib/logging/config/configurator.rb +0 -187
- data/lib/logging/config/yaml_configurator.rb +0 -190
- data/lib/logging/stats.rb +0 -277
- data/test/appenders/test_email.rb +0 -170
- data/test/appenders/test_growl.rb +0 -138
- data/test/config/test_configurator.rb +0 -69
- data/test/config/test_yaml_configurator.rb +0 -39
- data/test/test_consolidate.rb +0 -45
- data/test/test_stats.rb +0 -273
- data/version.txt +0 -1
@@ -1,69 +0,0 @@
|
|
1
|
-
|
2
|
-
require File.expand_path('../setup', File.dirname(__FILE__))
|
3
|
-
|
4
|
-
module TestLogging
|
5
|
-
module TestConfig
|
6
|
-
|
7
|
-
class TestConfigurator < Test::Unit::TestCase
|
8
|
-
include LoggingTestCase
|
9
|
-
|
10
|
-
def test_configuration
|
11
|
-
begin
|
12
|
-
load Logging.path(%w[data logging.rb])
|
13
|
-
rescue Exception => err
|
14
|
-
flunk err.inspect
|
15
|
-
end
|
16
|
-
|
17
|
-
levels = {
|
18
|
-
'deb' => 0,
|
19
|
-
'inf' => 1,
|
20
|
-
'prt' => 2,
|
21
|
-
'wrn' => 3,
|
22
|
-
'err' => 4,
|
23
|
-
'fat' => 5
|
24
|
-
}
|
25
|
-
assert_equal levels, Logging::LEVELS
|
26
|
-
assert_equal :inspect, Logging::OBJ_FORMAT
|
27
|
-
|
28
|
-
hash = Logging::Repository.instance.instance_variable_get(:@h)
|
29
|
-
assert hash.has_key?('A::B::C')
|
30
|
-
assert hash.has_key?('yourlogger')
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_simple_configuration
|
34
|
-
begin
|
35
|
-
load Logging.path(%w[data simple_logging.rb])
|
36
|
-
rescue Exception => err
|
37
|
-
flunk err.inspect
|
38
|
-
end
|
39
|
-
|
40
|
-
levels = {
|
41
|
-
'debug' => 0,
|
42
|
-
'info' => 1,
|
43
|
-
'warn' => 2,
|
44
|
-
'error' => 3,
|
45
|
-
'fatal' => 4
|
46
|
-
}
|
47
|
-
assert_equal levels, Logging::LEVELS
|
48
|
-
assert_equal false, Logging.const_defined?('OBJ_FORMAT')
|
49
|
-
|
50
|
-
root = Logging::Logger.root
|
51
|
-
assert_equal 1, root.level
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_bad_appender_configuration
|
55
|
-
assert_raise(Logging::Config::Configurator::Error) {
|
56
|
-
load Logging.path(%w[data bad_logging_1.rb])
|
57
|
-
}
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_bad_layout_configuration
|
61
|
-
assert_raise(Logging::Config::Configurator::Error) {
|
62
|
-
load Logging.path(%w[data bad_logging_2.rb])
|
63
|
-
}
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
end # module TestConfig
|
68
|
-
end # module TestLogging
|
69
|
-
|
@@ -1,39 +0,0 @@
|
|
1
|
-
|
2
|
-
require File.expand_path('../setup', File.dirname(__FILE__))
|
3
|
-
|
4
|
-
module TestLogging
|
5
|
-
module TestConfig
|
6
|
-
|
7
|
-
class TestYamlConfigurator < Test::Unit::TestCase
|
8
|
-
include LoggingTestCase
|
9
|
-
|
10
|
-
def test_class_load
|
11
|
-
assert_raise(::Logging::Config::YamlConfigurator::Error) {
|
12
|
-
::Logging::Config::YamlConfigurator.load(Object.new)
|
13
|
-
}
|
14
|
-
|
15
|
-
begin
|
16
|
-
fd = File.open('data/logging.yaml','r')
|
17
|
-
assert_nothing_raised {
|
18
|
-
::Logging::Config::YamlConfigurator.load(fd)
|
19
|
-
}
|
20
|
-
ensure
|
21
|
-
fd.close
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_initialize
|
26
|
-
io = StringIO.new
|
27
|
-
io << YAML.dump({:one => 1, :two => 2, :three => 3})
|
28
|
-
io.seek 0
|
29
|
-
|
30
|
-
assert_raise(::Logging::Config::YamlConfigurator::Error) {
|
31
|
-
::Logging::Config::YamlConfigurator.new(io, :meh)
|
32
|
-
}
|
33
|
-
end
|
34
|
-
|
35
|
-
end # class TestYamlConfigurator
|
36
|
-
|
37
|
-
end # module TestConfig
|
38
|
-
end # module TestLogging
|
39
|
-
|
data/test/test_consolidate.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
|
2
|
-
require File.expand_path('setup', File.dirname(__FILE__))
|
3
|
-
|
4
|
-
module TestLogging
|
5
|
-
|
6
|
-
class TestConsolidate < Test::Unit::TestCase
|
7
|
-
include LoggingTestCase
|
8
|
-
|
9
|
-
def test_root
|
10
|
-
Logging.consolidate :root
|
11
|
-
root = Logging.logger.root
|
12
|
-
|
13
|
-
assert_same root, Logging.logger['Foo']
|
14
|
-
assert_same root, Logging.logger['Foo::Bar']
|
15
|
-
assert_same root, Logging.logger[Array]
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_foo
|
19
|
-
Logging.consolidate 'Foo'
|
20
|
-
logger = Logging.logger['Foo::Bar::Baz']
|
21
|
-
|
22
|
-
assert_same Logging.logger['Foo'], logger
|
23
|
-
assert_not_same Logging.logger.root, logger
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_many
|
27
|
-
Logging.consolidate 'Foo', 'root', 'Foo::Bar::Baz'
|
28
|
-
|
29
|
-
root = Logging.logger.root
|
30
|
-
foo = Logging.logger['Foo']
|
31
|
-
fbb = Logging.logger['Foo::Bar::Baz']
|
32
|
-
|
33
|
-
assert_not_same root, foo
|
34
|
-
assert_not_same root, fbb
|
35
|
-
assert_not_same foo, fbb
|
36
|
-
|
37
|
-
assert_same root, Logging.logger[Hash]
|
38
|
-
assert_same root, Logging.logger['ActiveRecord::Base']
|
39
|
-
assert_same foo, Logging.logger['Foo::Bar']
|
40
|
-
assert_same fbb, Logging.logger['Foo::Bar::Baz::Buz']
|
41
|
-
end
|
42
|
-
|
43
|
-
end # class TestConsolidate
|
44
|
-
end # module TestLogging
|
45
|
-
|
data/test/test_stats.rb
DELETED
@@ -1,273 +0,0 @@
|
|
1
|
-
|
2
|
-
require File.expand_path('setup', File.dirname(__FILE__))
|
3
|
-
|
4
|
-
module TestLogging
|
5
|
-
module TestStats
|
6
|
-
|
7
|
-
class TestSampler < Test::Unit::TestCase
|
8
|
-
include LoggingTestCase
|
9
|
-
|
10
|
-
def setup
|
11
|
-
super
|
12
|
-
@sampler = ::Logging::Stats::Sampler.new('test')
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_reset
|
16
|
-
(1..10).each {|n| @sampler.sample n}
|
17
|
-
|
18
|
-
assert_equal 55, @sampler.sum
|
19
|
-
assert_equal 385, @sampler.sumsq
|
20
|
-
assert_equal 10, @sampler.num
|
21
|
-
assert_equal 1, @sampler.min
|
22
|
-
assert_equal 10, @sampler.max
|
23
|
-
assert_equal 10, @sampler.last
|
24
|
-
|
25
|
-
@sampler.reset
|
26
|
-
|
27
|
-
assert_equal 0, @sampler.sum
|
28
|
-
assert_equal 0, @sampler.sumsq
|
29
|
-
assert_equal 0, @sampler.num
|
30
|
-
assert_equal 0, @sampler.min
|
31
|
-
assert_equal 0, @sampler.max
|
32
|
-
assert_nil @sampler.last
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_coalesce
|
36
|
-
other = ::Logging::Stats::Sampler.new('other')
|
37
|
-
(1..5).each {|n| other.sample n}
|
38
|
-
(6..10).each {|n| @sampler.sample n}
|
39
|
-
|
40
|
-
assert_equal 5, @sampler.num
|
41
|
-
|
42
|
-
@sampler.coalesce other
|
43
|
-
|
44
|
-
assert_equal 55, @sampler.sum
|
45
|
-
assert_equal 385, @sampler.sumsq
|
46
|
-
assert_equal 10, @sampler.num
|
47
|
-
assert_equal 1, @sampler.min
|
48
|
-
assert_equal 10, @sampler.max
|
49
|
-
assert_equal 5, @sampler.last
|
50
|
-
|
51
|
-
@sampler.coalesce ::Logging::Stats::Sampler.new('tmp')
|
52
|
-
|
53
|
-
assert_equal 55, @sampler.sum
|
54
|
-
assert_equal 385, @sampler.sumsq
|
55
|
-
assert_equal 10, @sampler.num
|
56
|
-
assert_equal 1, @sampler.min
|
57
|
-
assert_equal 10, @sampler.max
|
58
|
-
assert_equal 5, @sampler.last
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_sample
|
62
|
-
@sampler.sample 1
|
63
|
-
|
64
|
-
assert_equal 1, @sampler.sum
|
65
|
-
assert_equal 1, @sampler.sumsq
|
66
|
-
assert_equal 1, @sampler.num
|
67
|
-
assert_equal 1, @sampler.min
|
68
|
-
assert_equal 1, @sampler.max
|
69
|
-
assert_equal 1, @sampler.last
|
70
|
-
|
71
|
-
@sampler.sample 2
|
72
|
-
|
73
|
-
assert_equal 3, @sampler.sum
|
74
|
-
assert_equal 5, @sampler.sumsq
|
75
|
-
assert_equal 2, @sampler.num
|
76
|
-
assert_equal 1, @sampler.min
|
77
|
-
assert_equal 2, @sampler.max
|
78
|
-
assert_equal 2, @sampler.last
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_to_s
|
82
|
-
(1..10).each {|n| @sampler.sample n}
|
83
|
-
assert_equal(
|
84
|
-
"[test]: SUM=55.000000, SUMSQ=385.000000, NUM=10, MEAN=5.500000, SD=3.027650, MIN=1.000000, MAX=10.000000",
|
85
|
-
@sampler.to_s
|
86
|
-
)
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_to_a
|
90
|
-
(1..10).each {|n| @sampler.sample n}
|
91
|
-
assert_equal(
|
92
|
-
['test', 55, 385, 10, 5.5, @sampler.sd, 1, 10],
|
93
|
-
@sampler.to_a
|
94
|
-
)
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_to_hash
|
98
|
-
(1..10).each {|n| @sampler.sample n}
|
99
|
-
assert_equal(
|
100
|
-
{:name => 'test', :sum => 55, :sumsq => 385, :num => 10, :mean => 5.5, :sd => @sampler.sd, :min => 1, :max => 10},
|
101
|
-
@sampler.to_hash
|
102
|
-
)
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_mean
|
106
|
-
assert_equal 0, @sampler.mean
|
107
|
-
|
108
|
-
@sampler.sample 10
|
109
|
-
assert_equal 10, @sampler.mean
|
110
|
-
|
111
|
-
@sampler.sample 20
|
112
|
-
assert_equal 15, @sampler.mean
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_sd
|
116
|
-
assert_equal 0, @sampler.sd
|
117
|
-
|
118
|
-
@sampler.sample 1
|
119
|
-
assert_equal 0, @sampler.sd
|
120
|
-
|
121
|
-
@sampler.sample 2
|
122
|
-
assert_in_delta 0.707106781186548, @sampler.sd, 1e-10
|
123
|
-
|
124
|
-
@sampler.sample 3
|
125
|
-
assert_in_delta 1.0, @sampler.sd, 1e-10
|
126
|
-
|
127
|
-
@sampler.sample 4
|
128
|
-
assert_in_delta 1.29099444873581, @sampler.sd, 1e-10
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_mark_and_tick
|
132
|
-
10.times do
|
133
|
-
@sampler.mark
|
134
|
-
sleep 0.01
|
135
|
-
@sampler.tick
|
136
|
-
end
|
137
|
-
|
138
|
-
assert_equal 10, @sampler.num
|
139
|
-
assert_in_delta 0.01, @sampler.mean, 1e-3
|
140
|
-
end
|
141
|
-
end # class TestSampler
|
142
|
-
|
143
|
-
class TestTracker < Test::Unit::TestCase
|
144
|
-
include LoggingTestCase
|
145
|
-
|
146
|
-
def setup
|
147
|
-
super
|
148
|
-
@tracker = ::Logging::Stats::Tracker.new
|
149
|
-
@stats = @tracker.stats
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_coalesce
|
153
|
-
1.times {|n| @tracker.sample('foo', n)}
|
154
|
-
2.times {|n| @tracker.sample('bar', n)}
|
155
|
-
3.times {|n| @tracker.sample('baz', n)}
|
156
|
-
|
157
|
-
assert_equal %w[bar baz foo], @stats.keys.sort
|
158
|
-
assert_equal 1, @stats['foo'].num
|
159
|
-
assert_equal 2, @stats['bar'].num
|
160
|
-
assert_equal 3, @stats['baz'].num
|
161
|
-
|
162
|
-
# when other is empty, nothing should change in our tracker
|
163
|
-
other = ::Logging::Stats::Tracker.new
|
164
|
-
@tracker.coalesce other
|
165
|
-
|
166
|
-
assert_equal %w[bar baz foo], @stats.keys.sort
|
167
|
-
assert_equal 1, @stats['foo'].num
|
168
|
-
assert_equal 2, @stats['bar'].num
|
169
|
-
assert_equal 3, @stats['baz'].num
|
170
|
-
|
171
|
-
# now add some samples to other
|
172
|
-
4.times {|n| other.sample('buz', n)}
|
173
|
-
5.times {|n| other.sample('bar', n)}
|
174
|
-
@tracker.coalesce other
|
175
|
-
|
176
|
-
assert_equal %w[bar baz buz foo], @stats.keys.sort
|
177
|
-
assert_equal 1, @stats['foo'].num
|
178
|
-
assert_equal 7, @stats['bar'].num
|
179
|
-
assert_equal 3, @stats['baz'].num
|
180
|
-
assert_equal 4, @stats['buz'].num
|
181
|
-
end
|
182
|
-
|
183
|
-
def test_mark
|
184
|
-
assert @stats.empty?
|
185
|
-
@tracker.mark 'foo'
|
186
|
-
assert !@stats.empty?
|
187
|
-
|
188
|
-
sampler = @stats['foo']
|
189
|
-
assert_equal 0, sampler.num
|
190
|
-
end
|
191
|
-
|
192
|
-
def test_tick
|
193
|
-
assert @stats.empty?
|
194
|
-
@tracker.tick 'foo'
|
195
|
-
assert !@stats.empty?
|
196
|
-
|
197
|
-
sampler = @stats['foo']
|
198
|
-
assert_equal 1, sampler.num
|
199
|
-
end
|
200
|
-
|
201
|
-
def test_sample
|
202
|
-
assert @stats.empty?
|
203
|
-
@tracker.sample 'foo', 1
|
204
|
-
assert !@stats.empty?
|
205
|
-
|
206
|
-
sampler = @stats['foo']
|
207
|
-
assert_equal 1, sampler.num
|
208
|
-
assert_equal 1, sampler.last
|
209
|
-
|
210
|
-
@tracker.sample 'foo', 2
|
211
|
-
assert_equal 2, sampler.num
|
212
|
-
assert_equal 2, sampler.last
|
213
|
-
assert_equal 3, sampler.sum
|
214
|
-
end
|
215
|
-
|
216
|
-
def test_time
|
217
|
-
assert @stats.empty?
|
218
|
-
@tracker.time('foo') {sleep 0.05}
|
219
|
-
assert !@stats.empty?
|
220
|
-
|
221
|
-
sampler = @stats['foo']
|
222
|
-
assert_equal 1, sampler.num
|
223
|
-
assert_in_delta 0.05, sampler.sum, 1e-2
|
224
|
-
|
225
|
-
@tracker.time('foo') {sleep 0.05}
|
226
|
-
assert_equal 2, sampler.num
|
227
|
-
assert_in_delta 0.10, sampler.sum, 1e-2
|
228
|
-
|
229
|
-
assert_raise(RuntimeError) do
|
230
|
-
@tracker.time('foo') {raise 'Uh Oh!'}
|
231
|
-
end
|
232
|
-
assert_equal 3, sampler.num
|
233
|
-
end
|
234
|
-
|
235
|
-
def test_reset
|
236
|
-
1.times {|n| @tracker.sample('foo', n)}
|
237
|
-
2.times {|n| @tracker.sample('bar', n)}
|
238
|
-
3.times {|n| @tracker.sample('baz', n)}
|
239
|
-
|
240
|
-
assert_equal 1, @stats['foo'].num
|
241
|
-
assert_equal 2, @stats['bar'].num
|
242
|
-
assert_equal 3, @stats['baz'].num
|
243
|
-
|
244
|
-
@tracker.reset
|
245
|
-
|
246
|
-
assert_equal 0, @stats['foo'].num
|
247
|
-
assert_equal 0, @stats['bar'].num
|
248
|
-
assert_equal 0, @stats['baz'].num
|
249
|
-
end
|
250
|
-
|
251
|
-
def test_reentrant_synchronization
|
252
|
-
assert_nothing_raised do
|
253
|
-
@tracker.sync {
|
254
|
-
@tracker.sample('foo', Math::PI)
|
255
|
-
@tracker.reset
|
256
|
-
}
|
257
|
-
end
|
258
|
-
end
|
259
|
-
|
260
|
-
def test_periodically_run
|
261
|
-
@tracker.periodically_run(0.1) {
|
262
|
-
@tracker.tick 'foo'
|
263
|
-
}
|
264
|
-
sleep 0.5
|
265
|
-
@tracker.stop
|
266
|
-
|
267
|
-
assert(@stats['foo'].num > 1)
|
268
|
-
end
|
269
|
-
end # class TestTracker
|
270
|
-
|
271
|
-
end # module TestStats
|
272
|
-
end # module TestLogging
|
273
|
-
|
data/version.txt
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.8.2
|