sgeorgi-logging 1.4.2
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/History.txt +262 -0
- data/README.rdoc +115 -0
- data/Rakefile +32 -0
- data/data/bad_logging_1.rb +13 -0
- data/data/bad_logging_2.rb +21 -0
- data/data/logging.rb +42 -0
- data/data/logging.yaml +63 -0
- data/data/simple_logging.rb +13 -0
- data/examples/appenders.rb +47 -0
- data/examples/classes.rb +41 -0
- data/examples/consolidation.rb +83 -0
- data/examples/fork.rb +37 -0
- data/examples/formatting.rb +51 -0
- data/examples/hierarchies.rb +73 -0
- data/examples/layouts.rb +48 -0
- data/examples/loggers.rb +29 -0
- data/examples/names.rb +43 -0
- data/examples/simple.rb +17 -0
- data/lib/logging.rb +528 -0
- data/lib/logging/appender.rb +260 -0
- data/lib/logging/appenders.rb +137 -0
- data/lib/logging/appenders/buffering.rb +178 -0
- data/lib/logging/appenders/console.rb +60 -0
- data/lib/logging/appenders/email.rb +75 -0
- data/lib/logging/appenders/file.rb +75 -0
- data/lib/logging/appenders/growl.rb +197 -0
- data/lib/logging/appenders/io.rb +69 -0
- data/lib/logging/appenders/rolling_file.rb +327 -0
- data/lib/logging/appenders/string_io.rb +68 -0
- data/lib/logging/appenders/syslog.rb +210 -0
- data/lib/logging/config/configurator.rb +188 -0
- data/lib/logging/config/yaml_configurator.rb +191 -0
- data/lib/logging/layout.rb +117 -0
- data/lib/logging/layouts.rb +47 -0
- data/lib/logging/layouts/basic.rb +32 -0
- data/lib/logging/layouts/parseable.rb +211 -0
- data/lib/logging/layouts/pattern.rb +311 -0
- data/lib/logging/log_event.rb +45 -0
- data/lib/logging/logger.rb +504 -0
- data/lib/logging/repository.rb +232 -0
- data/lib/logging/root_logger.rb +61 -0
- data/lib/logging/stats.rb +278 -0
- data/lib/logging/utils.rb +201 -0
- data/lib/spec/logging_helper.rb +34 -0
- data/test/appenders/test_buffered_io.rb +176 -0
- data/test/appenders/test_console.rb +66 -0
- data/test/appenders/test_email.rb +170 -0
- data/test/appenders/test_file.rb +95 -0
- data/test/appenders/test_growl.rb +127 -0
- data/test/appenders/test_io.rb +129 -0
- data/test/appenders/test_rolling_file.rb +209 -0
- data/test/appenders/test_syslog.rb +194 -0
- data/test/benchmark.rb +86 -0
- data/test/config/test_configurator.rb +70 -0
- data/test/config/test_yaml_configurator.rb +40 -0
- data/test/layouts/test_basic.rb +42 -0
- data/test/layouts/test_json.rb +112 -0
- data/test/layouts/test_pattern.rb +198 -0
- data/test/layouts/test_yaml.rb +121 -0
- data/test/setup.rb +43 -0
- data/test/test_appender.rb +152 -0
- data/test/test_consolidate.rb +46 -0
- data/test/test_layout.rb +110 -0
- data/test/test_log_event.rb +80 -0
- data/test/test_logger.rb +699 -0
- data/test/test_logging.rb +267 -0
- data/test/test_repository.rb +158 -0
- data/test/test_root_logger.rb +81 -0
- data/test/test_stats.rb +274 -0
- data/test/test_utils.rb +116 -0
- data/version.txt +1 -0
- metadata +227 -0
@@ -0,0 +1,80 @@
|
|
1
|
+
|
2
|
+
require File.join(File.dirname(__FILE__), %w[setup])
|
3
|
+
|
4
|
+
module TestLogging
|
5
|
+
|
6
|
+
class TestLogEvent < Test::Unit::TestCase
|
7
|
+
include LoggingTestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
super
|
11
|
+
|
12
|
+
@appender = EventAppender.new('test')
|
13
|
+
@logger = ::Logging::Logger['TestLogger']
|
14
|
+
@logger.add_appenders @appender
|
15
|
+
|
16
|
+
@logger.info 'message 1'
|
17
|
+
@event = @appender.event
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_data
|
21
|
+
assert_equal 'message 1', @event.data
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_data_eq
|
25
|
+
@event.data = 'message 2'
|
26
|
+
assert_equal 'message 2', @event.data
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_file
|
30
|
+
assert_equal '', @event.file
|
31
|
+
|
32
|
+
@logger.trace = true
|
33
|
+
@logger.warn 'warning message'
|
34
|
+
assert_match %r/test_log_event.rb\z/, @appender.event.file
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_level
|
38
|
+
assert_equal 1, @event.level
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_level_eq
|
42
|
+
@event.level = 3
|
43
|
+
assert_equal 3, @event.level
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_line
|
47
|
+
assert_equal '', @event.file
|
48
|
+
|
49
|
+
@logger.trace = true
|
50
|
+
@logger.error 'error message'
|
51
|
+
assert_equal 50, @appender.event.line
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_logger
|
55
|
+
assert_equal 'TestLogger', @event.logger
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_logger_eq
|
59
|
+
@event.logger = 'MyLogger'
|
60
|
+
assert_equal 'MyLogger', @event.logger
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_method
|
64
|
+
assert_equal '', @event.file
|
65
|
+
|
66
|
+
@logger.trace = true
|
67
|
+
@logger.debug 'debug message'
|
68
|
+
assert_equal 'test_method', @appender.event.method
|
69
|
+
end
|
70
|
+
|
71
|
+
end # class TestLogEvent
|
72
|
+
|
73
|
+
class EventAppender < ::Logging::Appender
|
74
|
+
attr_reader :event
|
75
|
+
def append( event ) @event = event end
|
76
|
+
end
|
77
|
+
|
78
|
+
end # module TestLogging
|
79
|
+
|
80
|
+
# EOF
|
data/test/test_logger.rb
ADDED
@@ -0,0 +1,699 @@
|
|
1
|
+
|
2
|
+
require File.join(File.dirname(__FILE__), %w[setup])
|
3
|
+
|
4
|
+
module TestLogging
|
5
|
+
|
6
|
+
class TestLogger < Test::Unit::TestCase
|
7
|
+
include LoggingTestCase
|
8
|
+
|
9
|
+
def test_initialize
|
10
|
+
assert_nothing_raised {::Logging::Logger[:test]}
|
11
|
+
assert_equal ::Logging::Logger[:test], ::Logging::Logger['test']
|
12
|
+
assert_nothing_raised {::Logging::Logger.new(Object)}
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_add
|
16
|
+
root = ::Logging::Logger[:root]
|
17
|
+
root.level = 'info'
|
18
|
+
|
19
|
+
a1 = ::Logging::Appenders::StringIo.new 'a1'
|
20
|
+
a2 = ::Logging::Appenders::StringIo.new 'a2'
|
21
|
+
log = ::Logging::Logger.new 'A Logger'
|
22
|
+
|
23
|
+
root.add_appenders a1
|
24
|
+
assert_nil a1.readline
|
25
|
+
assert_nil a2.readline
|
26
|
+
|
27
|
+
log.add(0, 'this should NOT be logged')
|
28
|
+
assert_nil a1.readline
|
29
|
+
assert_nil a2.readline
|
30
|
+
|
31
|
+
log.add(1, 'this should be logged')
|
32
|
+
assert_equal " INFO A Logger : this should be logged\n", a1.readline
|
33
|
+
assert_nil a1.readline
|
34
|
+
assert_nil a2.readline
|
35
|
+
|
36
|
+
log.add(2,[1,2,3,4])
|
37
|
+
assert_equal " WARN A Logger : <Array> #{[1,2,3,4]}\n", a1.readline
|
38
|
+
assert_nil a1.readline
|
39
|
+
assert_nil a2.readline
|
40
|
+
|
41
|
+
log.add_appenders a2
|
42
|
+
log.add(3, 'an error has occurred')
|
43
|
+
assert_equal "ERROR A Logger : an error has occurred\n", a1.readline
|
44
|
+
assert_equal "ERROR A Logger : an error has occurred\n", a2.readline
|
45
|
+
assert_nil a1.readline
|
46
|
+
assert_nil a2.readline
|
47
|
+
|
48
|
+
log.additive = false
|
49
|
+
log.add(3, 'another error has occurred')
|
50
|
+
assert_equal "ERROR A Logger : another error has occurred\n", a2.readline
|
51
|
+
assert_nil a1.readline
|
52
|
+
assert_nil a2.readline
|
53
|
+
|
54
|
+
log.add_appenders a1
|
55
|
+
log.add(4, 'fatal exception')
|
56
|
+
assert_equal "FATAL A Logger : fatal exception\n", a1.readline
|
57
|
+
assert_equal "FATAL A Logger : fatal exception\n", a2.readline
|
58
|
+
assert_nil a1.readline
|
59
|
+
assert_nil a2.readline
|
60
|
+
|
61
|
+
|
62
|
+
log.level = :warn
|
63
|
+
log.add(2) do
|
64
|
+
str = 'a string of data'
|
65
|
+
str
|
66
|
+
end
|
67
|
+
assert_equal " WARN A Logger : a string of data\n", a1.readline
|
68
|
+
assert_equal " WARN A Logger : a string of data\n", a2.readline
|
69
|
+
assert_nil a1.readline
|
70
|
+
assert_nil a2.readline
|
71
|
+
|
72
|
+
log.add(1) do
|
73
|
+
rb_raise(RuntimeError, "this block should not be executed")
|
74
|
+
end
|
75
|
+
assert_nil a1.readline
|
76
|
+
assert_nil a2.readline
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_add_appenders
|
80
|
+
log = ::Logging::Logger.new 'A'
|
81
|
+
|
82
|
+
appenders = lambda {log.instance_variable_get :@appenders}
|
83
|
+
assert_equal [], appenders[]
|
84
|
+
|
85
|
+
assert_raise(ArgumentError) {log.add_appenders Object.new}
|
86
|
+
assert_raise(ArgumentError) {log.add_appenders 'not an appender'}
|
87
|
+
|
88
|
+
a = ::Logging::Appender.new 'test_appender_1'
|
89
|
+
b = ::Logging::Appender.new 'test_appender_2'
|
90
|
+
c = ::Logging::Appender.new 'test_appender_3'
|
91
|
+
|
92
|
+
log.add_appenders a
|
93
|
+
assert_equal [a], appenders[]
|
94
|
+
|
95
|
+
log.add_appenders a
|
96
|
+
assert_equal [a], appenders[]
|
97
|
+
|
98
|
+
log.add_appenders b
|
99
|
+
assert_equal [a,b], appenders[]
|
100
|
+
|
101
|
+
log.add_appenders c
|
102
|
+
assert_equal [a,b,c], appenders[]
|
103
|
+
|
104
|
+
log.add_appenders a, c
|
105
|
+
assert_equal [a,b,c], appenders[]
|
106
|
+
|
107
|
+
log.clear_appenders
|
108
|
+
assert_equal [], appenders[]
|
109
|
+
|
110
|
+
log.add_appenders a, c
|
111
|
+
assert_equal [a,c], appenders[]
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_additive
|
115
|
+
root = ::Logging::Logger.new :root
|
116
|
+
log = ::Logging::Logger.new 'A'
|
117
|
+
|
118
|
+
assert_raise(NoMethodError) {root.additive}
|
119
|
+
assert_equal true, log.additive
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_additive_eq
|
123
|
+
root = ::Logging::Logger.new :root
|
124
|
+
log = ::Logging::Logger.new 'A'
|
125
|
+
|
126
|
+
assert_raise(NoMethodError) {root.additive = false}
|
127
|
+
assert_equal true, log.additive
|
128
|
+
|
129
|
+
log.additive = false
|
130
|
+
assert_equal false, log.additive
|
131
|
+
|
132
|
+
log.additive = true
|
133
|
+
assert_equal true, log.additive
|
134
|
+
|
135
|
+
log.additive = 'false'
|
136
|
+
assert_equal false, log.additive
|
137
|
+
|
138
|
+
log.additive = 'true'
|
139
|
+
assert_equal true, log.additive
|
140
|
+
|
141
|
+
log.additive = nil
|
142
|
+
assert_equal true, log.additive
|
143
|
+
|
144
|
+
assert_raise(ArgumentError) {log.additive = Object}
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_appenders_eq
|
148
|
+
log = ::Logging::Logger.new '42'
|
149
|
+
|
150
|
+
appenders = lambda {log.instance_variable_get :@appenders}
|
151
|
+
assert_equal [], appenders[]
|
152
|
+
|
153
|
+
assert_raise(ArgumentError) {log.appenders = Object.new}
|
154
|
+
assert_raise(ArgumentError) {log.appenders = 'not an appender'}
|
155
|
+
|
156
|
+
a = ::Logging::Appender.new 'test_appender_1'
|
157
|
+
b = ::Logging::Appender.new 'test_appender_2'
|
158
|
+
c = ::Logging::Appender.new 'test_appender_3'
|
159
|
+
|
160
|
+
log.appenders = a, b, c
|
161
|
+
assert_equal [a, b, c], appenders[]
|
162
|
+
|
163
|
+
log.appenders = b
|
164
|
+
assert_equal [b], appenders[]
|
165
|
+
|
166
|
+
log.appenders = c, a, b
|
167
|
+
assert_equal [c,a,b], appenders[]
|
168
|
+
|
169
|
+
log.appenders = nil
|
170
|
+
assert_equal [], appenders[]
|
171
|
+
|
172
|
+
log.appenders = %w[test_appender_1 test_appender_3]
|
173
|
+
assert_equal [a,c], appenders[]
|
174
|
+
|
175
|
+
assert_raise(ArgumentError) {log.appenders = 'unknown'}
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_class_aref
|
179
|
+
root = ::Logging::Logger[:root]
|
180
|
+
assert_same root, ::Logging::Logger[:root]
|
181
|
+
|
182
|
+
a = []
|
183
|
+
assert_same ::Logging::Logger['Array'], ::Logging::Logger[Array]
|
184
|
+
assert_same ::Logging::Logger['Array'], ::Logging::Logger[a]
|
185
|
+
|
186
|
+
assert_not_same ::Logging::Logger['Array'], ::Logging::Logger[:root]
|
187
|
+
assert_not_same ::Logging::Logger['A'], ::Logging::Logger['A::B']
|
188
|
+
end
|
189
|
+
|
190
|
+
def test_class_root
|
191
|
+
root = ::Logging::Logger[:root]
|
192
|
+
assert_same root, ::Logging::Logger.root
|
193
|
+
end
|
194
|
+
|
195
|
+
def test_clear_appenders
|
196
|
+
log = ::Logging::Logger.new 'Elliott'
|
197
|
+
|
198
|
+
appenders = lambda {log.instance_variable_get :@appenders}
|
199
|
+
assert_equal [], appenders[]
|
200
|
+
|
201
|
+
a = ::Logging::Appender.new 'test_appender_1'
|
202
|
+
b = ::Logging::Appender.new 'test_appender_2'
|
203
|
+
c = ::Logging::Appender.new 'test_appender_3'
|
204
|
+
|
205
|
+
log.add_appenders a, b, c
|
206
|
+
assert_equal [a,b,c], appenders[]
|
207
|
+
|
208
|
+
log.clear_appenders
|
209
|
+
assert_equal [], appenders[]
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_concat
|
213
|
+
a1 = ::Logging::Appenders::StringIo.new 'a1'
|
214
|
+
a2 = ::Logging::Appenders::StringIo.new 'a2'
|
215
|
+
log = ::Logging::Logger.new 'A'
|
216
|
+
|
217
|
+
::Logging::Logger[:root].add_appenders a1
|
218
|
+
assert_nil a1.readline
|
219
|
+
assert_nil a2.readline
|
220
|
+
|
221
|
+
log << "this is line one of the log file\n"
|
222
|
+
assert_equal "this is line one of the log file\n", a1.readline
|
223
|
+
assert_nil a1.readline
|
224
|
+
assert_nil a2.readline
|
225
|
+
|
226
|
+
log << "this is line two of the log file\n"
|
227
|
+
log << "this is line three of the log file\n"
|
228
|
+
assert_equal "this is line two of the log file\n", a1.readline
|
229
|
+
assert_equal "this is line three of the log file\n", a1.readline
|
230
|
+
assert_nil a1.readline
|
231
|
+
assert_nil a2.readline
|
232
|
+
|
233
|
+
log.add_appenders a2
|
234
|
+
log << "this is line four of the log file\n"
|
235
|
+
assert_equal "this is line four of the log file\n", a1.readline
|
236
|
+
assert_equal "this is line four of the log file\n", a2.readline
|
237
|
+
assert_nil a1.readline
|
238
|
+
assert_nil a2.readline
|
239
|
+
|
240
|
+
log.additive = false
|
241
|
+
log << "this is line five of the log file\n"
|
242
|
+
assert_equal "this is line five of the log file\n", a2.readline
|
243
|
+
assert_nil a1.readline
|
244
|
+
assert_nil a2.readline
|
245
|
+
|
246
|
+
log.add_appenders a1
|
247
|
+
log << "this is line six of the log file\n"
|
248
|
+
assert_equal "this is line six of the log file\n", a1.readline
|
249
|
+
assert_equal "this is line six of the log file\n", a2.readline
|
250
|
+
assert_nil a1.readline
|
251
|
+
assert_nil a2.readline
|
252
|
+
end
|
253
|
+
|
254
|
+
def test_inspect
|
255
|
+
root = ::Logging::Logger.new :root
|
256
|
+
|
257
|
+
str = "<#{root.class.name}:0x%x name=\"#{root.name}\">" % root.object_id
|
258
|
+
assert_equal str, root.inspect
|
259
|
+
end
|
260
|
+
|
261
|
+
def test_level
|
262
|
+
root = ::Logging::Logger.new :root
|
263
|
+
log = ::Logging::Logger.new 'A'
|
264
|
+
|
265
|
+
assert_equal 0, root.level
|
266
|
+
assert_equal 0, log.level
|
267
|
+
|
268
|
+
root.level = :warn
|
269
|
+
assert_equal 2, root.level
|
270
|
+
assert_equal 2, log.level
|
271
|
+
|
272
|
+
log.level = nil
|
273
|
+
assert_equal 2, root.level
|
274
|
+
assert_equal 2, log.level
|
275
|
+
|
276
|
+
log.level = :error
|
277
|
+
assert_equal 2, root.level
|
278
|
+
assert_equal 3, log.level
|
279
|
+
end
|
280
|
+
|
281
|
+
def test_level_eq
|
282
|
+
root = ::Logging::Logger.new :root
|
283
|
+
log = ::Logging::Logger.new 'A'
|
284
|
+
logb = ::Logging::Logger.new 'A::B'
|
285
|
+
|
286
|
+
assert_equal 0, root.level
|
287
|
+
assert_equal 0, log.level
|
288
|
+
assert_equal 0, logb.level
|
289
|
+
assert_equal true, root.debug?
|
290
|
+
assert_equal true, log.debug?
|
291
|
+
assert_equal true, logb.debug?
|
292
|
+
|
293
|
+
assert_raise(ArgumentError) {root.level = -1}
|
294
|
+
assert_raise(ArgumentError) {root.level = 6}
|
295
|
+
assert_raise(ArgumentError) {root.level = Object}
|
296
|
+
assert_raise(ArgumentError) {root.level = 'bob'}
|
297
|
+
assert_raise(ArgumentError) {root.level = :wtf}
|
298
|
+
|
299
|
+
root.level = 'INFO'
|
300
|
+
assert_equal 1, root.level
|
301
|
+
assert_equal 1, log.level
|
302
|
+
assert_equal 1, logb.level
|
303
|
+
assert_equal false, root.debug?
|
304
|
+
assert_equal true, root.info?
|
305
|
+
assert_equal false, log.debug?
|
306
|
+
assert_equal true , log.info?
|
307
|
+
assert_equal false, logb.debug?
|
308
|
+
assert_equal true , logb.info?
|
309
|
+
|
310
|
+
root.level = :warn
|
311
|
+
assert_equal 2, root.level
|
312
|
+
assert_equal 2, log.level
|
313
|
+
assert_equal 2, logb.level
|
314
|
+
assert_equal false, root.info?
|
315
|
+
assert_equal true, root.warn?
|
316
|
+
assert_equal false, log.info?
|
317
|
+
assert_equal true , log.warn?
|
318
|
+
assert_equal false, logb.info?
|
319
|
+
assert_equal true , logb.warn?
|
320
|
+
|
321
|
+
root.level = 'error'
|
322
|
+
assert_equal 3, root.level
|
323
|
+
assert_equal 3, log.level
|
324
|
+
assert_equal 3, logb.level
|
325
|
+
assert_equal false, root.warn?
|
326
|
+
assert_equal true, root.error?
|
327
|
+
assert_equal false, log.warn?
|
328
|
+
assert_equal true , log.error?
|
329
|
+
assert_equal false, logb.warn?
|
330
|
+
assert_equal true , logb.error?
|
331
|
+
|
332
|
+
root.level = 4
|
333
|
+
assert_equal 4, root.level
|
334
|
+
assert_equal 4, log.level
|
335
|
+
assert_equal 4, logb.level
|
336
|
+
assert_equal false, root.error?
|
337
|
+
assert_equal true, root.fatal?
|
338
|
+
assert_equal false, log.error?
|
339
|
+
assert_equal true , log.fatal?
|
340
|
+
assert_equal false, logb.error?
|
341
|
+
assert_equal true , logb.fatal?
|
342
|
+
|
343
|
+
log.level = nil
|
344
|
+
assert_equal 4, root.level
|
345
|
+
assert_equal 4, log.level
|
346
|
+
assert_equal 4, logb.level
|
347
|
+
assert_equal false, root.error?
|
348
|
+
assert_equal true, root.fatal?
|
349
|
+
assert_equal false, log.error?
|
350
|
+
assert_equal true , log.fatal?
|
351
|
+
assert_equal false, logb.error?
|
352
|
+
assert_equal true , logb.fatal?
|
353
|
+
|
354
|
+
log.level = :DEBUG
|
355
|
+
assert_equal 4, root.level
|
356
|
+
assert_equal 0, log.level
|
357
|
+
assert_equal 0, logb.level
|
358
|
+
assert_equal false, root.error?
|
359
|
+
assert_equal true, root.fatal?
|
360
|
+
assert_equal true, log.debug?
|
361
|
+
assert_equal true, logb.debug?
|
362
|
+
|
363
|
+
log.level = :off
|
364
|
+
assert_equal 4, root.level
|
365
|
+
assert_equal 5, log.level
|
366
|
+
assert_equal 5, logb.level
|
367
|
+
assert_equal false, root.error?
|
368
|
+
assert_equal true, root.fatal?
|
369
|
+
assert_equal false, log.fatal?
|
370
|
+
assert_equal false, logb.fatal?
|
371
|
+
|
372
|
+
root.level = :all
|
373
|
+
assert_equal 0, root.level
|
374
|
+
assert_equal 5, log.level
|
375
|
+
assert_equal 5, logb.level
|
376
|
+
assert_equal true, root.debug?
|
377
|
+
assert_equal false, log.fatal?
|
378
|
+
assert_equal false, logb.fatal?
|
379
|
+
|
380
|
+
log.level = nil
|
381
|
+
assert_equal 0, root.level
|
382
|
+
assert_equal 0, log.level
|
383
|
+
assert_equal 0, logb.level
|
384
|
+
assert_equal true, root.debug?
|
385
|
+
assert_equal true, log.debug?
|
386
|
+
assert_equal true, logb.debug?
|
387
|
+
|
388
|
+
logb.level = :warn
|
389
|
+
assert_equal 0, root.level
|
390
|
+
assert_equal 0, log.level
|
391
|
+
assert_equal 2, logb.level
|
392
|
+
assert_equal true, root.debug?
|
393
|
+
assert_equal true, log.debug?
|
394
|
+
assert_equal false, logb.info?
|
395
|
+
assert_equal true, logb.warn?
|
396
|
+
|
397
|
+
log.level = :info
|
398
|
+
logb.level = nil
|
399
|
+
assert_equal 0, root.level
|
400
|
+
assert_equal 1, log.level
|
401
|
+
assert_equal 1, logb.level
|
402
|
+
assert_equal true, root.debug?
|
403
|
+
assert_equal false, logb.debug?
|
404
|
+
assert_equal true, log.info?
|
405
|
+
assert_equal false, logb.debug?
|
406
|
+
assert_equal true, logb.info?
|
407
|
+
end
|
408
|
+
|
409
|
+
def test_log
|
410
|
+
root = ::Logging::Logger[:root]
|
411
|
+
root.level = 'info'
|
412
|
+
|
413
|
+
a1 = ::Logging::Appenders::StringIo.new 'a1'
|
414
|
+
a2 = ::Logging::Appenders::StringIo.new 'a2'
|
415
|
+
log = ::Logging::Logger.new 'A Logger'
|
416
|
+
|
417
|
+
root.add_appenders a1
|
418
|
+
assert_nil a1.readline
|
419
|
+
assert_nil a2.readline
|
420
|
+
|
421
|
+
log.debug 'this should NOT be logged'
|
422
|
+
assert_nil a1.readline
|
423
|
+
assert_nil a2.readline
|
424
|
+
|
425
|
+
log.info 'this should be logged'
|
426
|
+
assert_equal " INFO A Logger : this should be logged\n", a1.readline
|
427
|
+
assert_nil a1.readline
|
428
|
+
assert_nil a2.readline
|
429
|
+
|
430
|
+
log.warn [1,2,3,4]
|
431
|
+
assert_equal " WARN A Logger : <Array> #{[1,2,3,4]}\n", a1.readline
|
432
|
+
assert_nil a1.readline
|
433
|
+
assert_nil a2.readline
|
434
|
+
|
435
|
+
log.add_appenders a2
|
436
|
+
log.error 'an error has occurred'
|
437
|
+
assert_equal "ERROR A Logger : an error has occurred\n", a1.readline
|
438
|
+
assert_equal "ERROR A Logger : an error has occurred\n", a2.readline
|
439
|
+
assert_nil a1.readline
|
440
|
+
assert_nil a2.readline
|
441
|
+
|
442
|
+
log.additive = false
|
443
|
+
log.error 'another error has occurred'
|
444
|
+
assert_equal "ERROR A Logger : another error has occurred\n", a2.readline
|
445
|
+
assert_nil a1.readline
|
446
|
+
assert_nil a2.readline
|
447
|
+
|
448
|
+
log.add_appenders a1
|
449
|
+
log.fatal 'fatal exception'
|
450
|
+
assert_equal "FATAL A Logger : fatal exception\n", a1.readline
|
451
|
+
assert_equal "FATAL A Logger : fatal exception\n", a2.readline
|
452
|
+
assert_nil a1.readline
|
453
|
+
assert_nil a2.readline
|
454
|
+
|
455
|
+
assert_equal false, log.debug
|
456
|
+
assert_equal true, log.info
|
457
|
+
assert_equal " INFO A Logger : <NilClass> nil\n", a1.readline
|
458
|
+
assert_equal " INFO A Logger : <NilClass> nil\n", a2.readline
|
459
|
+
assert_equal true, log.warn
|
460
|
+
assert_equal " WARN A Logger : <NilClass> nil\n", a1.readline
|
461
|
+
assert_equal " WARN A Logger : <NilClass> nil\n", a2.readline
|
462
|
+
assert_equal true, log.error
|
463
|
+
assert_equal "ERROR A Logger : <NilClass> nil\n", a1.readline
|
464
|
+
assert_equal "ERROR A Logger : <NilClass> nil\n", a2.readline
|
465
|
+
assert_equal true, log.fatal
|
466
|
+
assert_equal "FATAL A Logger : <NilClass> nil\n", a1.readline
|
467
|
+
assert_equal "FATAL A Logger : <NilClass> nil\n", a2.readline
|
468
|
+
|
469
|
+
log.level = :warn
|
470
|
+
assert_equal false, log.debug
|
471
|
+
assert_equal false, log.info
|
472
|
+
assert_equal true, log.warn
|
473
|
+
assert_equal " WARN A Logger : <NilClass> nil\n", a1.readline
|
474
|
+
assert_equal " WARN A Logger : <NilClass> nil\n", a2.readline
|
475
|
+
assert_equal true, log.error
|
476
|
+
assert_equal "ERROR A Logger : <NilClass> nil\n", a1.readline
|
477
|
+
assert_equal "ERROR A Logger : <NilClass> nil\n", a2.readline
|
478
|
+
assert_equal true, log.fatal
|
479
|
+
assert_equal "FATAL A Logger : <NilClass> nil\n", a1.readline
|
480
|
+
assert_equal "FATAL A Logger : <NilClass> nil\n", a2.readline
|
481
|
+
|
482
|
+
assert_raise(NoMethodError) {log.critical 'this log level does not exist'}
|
483
|
+
|
484
|
+
log.warn do
|
485
|
+
str = 'a string of data'
|
486
|
+
str
|
487
|
+
end
|
488
|
+
assert_equal " WARN A Logger : a string of data\n", a1.readline
|
489
|
+
assert_equal " WARN A Logger : a string of data\n", a2.readline
|
490
|
+
assert_nil a1.readline
|
491
|
+
assert_nil a2.readline
|
492
|
+
|
493
|
+
log.info do
|
494
|
+
rb_raise(RuntimeError, "this block should not be executed")
|
495
|
+
end
|
496
|
+
assert_nil a1.readline
|
497
|
+
assert_nil a2.readline
|
498
|
+
end
|
499
|
+
|
500
|
+
def test_log_eh
|
501
|
+
::Logging::Logger[:root].level = 'info'
|
502
|
+
log = ::Logging::Logger['A Logger']
|
503
|
+
|
504
|
+
assert_equal false, log.debug?
|
505
|
+
assert_equal true, log.info?
|
506
|
+
assert_equal true, log.warn?
|
507
|
+
assert_equal true, log.error?
|
508
|
+
assert_equal true, log.fatal?
|
509
|
+
|
510
|
+
log.level = :warn
|
511
|
+
assert_equal false, log.debug?
|
512
|
+
assert_equal false, log.info?
|
513
|
+
assert_equal true, log.warn?
|
514
|
+
assert_equal true, log.error?
|
515
|
+
assert_equal true, log.fatal?
|
516
|
+
|
517
|
+
assert_raise(NoMethodError) do
|
518
|
+
log.critical? 'this log level does not exist'
|
519
|
+
end
|
520
|
+
end
|
521
|
+
|
522
|
+
def test_name
|
523
|
+
root = ::Logging::Logger.new :root
|
524
|
+
log = ::Logging::Logger.new 'A'
|
525
|
+
|
526
|
+
assert_equal 'root', root.name
|
527
|
+
assert_equal 'A', log.name
|
528
|
+
end
|
529
|
+
|
530
|
+
def test_parent
|
531
|
+
logger = ::Logging::Logger
|
532
|
+
root = logger.new :root
|
533
|
+
|
534
|
+
assert_raise(NoMethodError) {root.parent}
|
535
|
+
|
536
|
+
assert_same root, logger['A'].parent
|
537
|
+
assert_same logger['A'], logger['A::B'].parent
|
538
|
+
assert_same logger['A::B'], logger['A::B::C::D'].parent
|
539
|
+
assert_same logger['A::B'], logger['A::B::C::E'].parent
|
540
|
+
assert_same logger['A::B'], logger['A::B::C::F'].parent
|
541
|
+
|
542
|
+
assert_same logger['A::B'], logger['A::B::C'].parent
|
543
|
+
assert_same logger['A::B::C'], logger['A::B::C::D'].parent
|
544
|
+
assert_same logger['A::B::C'], logger['A::B::C::E'].parent
|
545
|
+
assert_same logger['A::B::C'], logger['A::B::C::F'].parent
|
546
|
+
|
547
|
+
assert_same logger['A::B::C::E'], logger['A::B::C::E::G'].parent
|
548
|
+
end
|
549
|
+
|
550
|
+
def test_remove_appenders
|
551
|
+
log = ::Logging::Logger['X']
|
552
|
+
|
553
|
+
appenders = lambda {log.instance_variable_get :@appenders}
|
554
|
+
assert_equal [], appenders[]
|
555
|
+
|
556
|
+
a = ::Logging::Appender.new 'test_appender_1'
|
557
|
+
b = ::Logging::Appender.new 'test_appender_2'
|
558
|
+
c = ::Logging::Appender.new 'test_appender_3'
|
559
|
+
|
560
|
+
log.add_appenders a, b, c
|
561
|
+
assert_equal [a,b,c], appenders[]
|
562
|
+
|
563
|
+
assert_raise(ArgumentError) {log.remove_appenders Object.new}
|
564
|
+
assert_raise(ArgumentError) {log.remove_appenders 10}
|
565
|
+
|
566
|
+
log.remove_appenders b
|
567
|
+
assert_equal [a,c], appenders[]
|
568
|
+
|
569
|
+
log.remove_appenders 'test_appender_1'
|
570
|
+
assert_equal [c], appenders[]
|
571
|
+
|
572
|
+
log.remove_appenders c
|
573
|
+
assert_equal [], appenders[]
|
574
|
+
|
575
|
+
log.remove_appenders a, b, c
|
576
|
+
assert_equal [], appenders[]
|
577
|
+
|
578
|
+
log.add_appenders a, b, c
|
579
|
+
assert_equal [a,b,c], appenders[]
|
580
|
+
|
581
|
+
log.remove_appenders a, c
|
582
|
+
assert_equal [b], appenders[]
|
583
|
+
end
|
584
|
+
|
585
|
+
def test_spaceship
|
586
|
+
logs = %w(
|
587
|
+
A A::B A::B::C A::B::C::D A::B::C::E A::B::C::E::G A::B::C::F
|
588
|
+
).map {|x| ::Logging::Logger[x]}
|
589
|
+
logs.unshift ::Logging::Logger[:root]
|
590
|
+
|
591
|
+
logs.inject do |a,b|
|
592
|
+
assert_equal(-1, a <=> b, "'#{a.name}' <=> '#{b.name}'")
|
593
|
+
b
|
594
|
+
end
|
595
|
+
|
596
|
+
assert_equal 1, logs[1] <=> ::Logging::Logger[:root]
|
597
|
+
assert_raise(ArgumentError) {logs[1] <=> Object.new}
|
598
|
+
assert_raise(ArgumentError) {::Logging::Logger[:root] <=> 'string'}
|
599
|
+
end
|
600
|
+
|
601
|
+
def test_trace
|
602
|
+
log = ::Logging::Logger[:root]
|
603
|
+
assert_equal false, log.trace
|
604
|
+
|
605
|
+
log.trace = true
|
606
|
+
assert_equal true, log.trace
|
607
|
+
|
608
|
+
log = ::Logging::Logger['A']
|
609
|
+
assert_equal false, log.trace
|
610
|
+
|
611
|
+
log.trace = true
|
612
|
+
assert_equal true, log.trace
|
613
|
+
end
|
614
|
+
|
615
|
+
def test_trace_eq
|
616
|
+
log = ::Logging::Logger.new 'A'
|
617
|
+
assert_equal false, log.trace
|
618
|
+
|
619
|
+
log.trace = true
|
620
|
+
assert_equal true, log.trace
|
621
|
+
|
622
|
+
log.trace = false
|
623
|
+
assert_equal false, log.trace
|
624
|
+
|
625
|
+
log.trace = 'true'
|
626
|
+
assert_equal true, log.trace
|
627
|
+
|
628
|
+
log.trace = 'false'
|
629
|
+
assert_equal false, log.trace
|
630
|
+
|
631
|
+
log.trace = nil
|
632
|
+
assert_equal false, log.trace
|
633
|
+
|
634
|
+
assert_raise(ArgumentError) {log.trace = Object}
|
635
|
+
end
|
636
|
+
|
637
|
+
def test_dump_configuration
|
638
|
+
log_a = ::Logging::Logger['A-logger']
|
639
|
+
log_b = ::Logging::Logger['A-logger::B-logger']
|
640
|
+
log_c = ::Logging::Logger['A-logger::B-logger::C-logger']
|
641
|
+
log_d = ::Logging::Logger['A-logger::D-logger']
|
642
|
+
|
643
|
+
sio = StringIO.new
|
644
|
+
sio.extend ::Logging::Appenders::StringIo::IoToS
|
645
|
+
|
646
|
+
log_a._dump_configuration( sio )
|
647
|
+
assert_equal(
|
648
|
+
"A-logger ........................................ debug +A -T\n", sio.to_s)
|
649
|
+
|
650
|
+
log_b._dump_configuration( sio )
|
651
|
+
assert_equal(
|
652
|
+
"A-logger::B-logger .............................. debug +A -T\n", sio.to_s)
|
653
|
+
|
654
|
+
log_c._dump_configuration( sio )
|
655
|
+
assert_equal(
|
656
|
+
"A-logger::B-logger::C-logger .................... debug +A -T\n", sio.to_s)
|
657
|
+
|
658
|
+
log_d._dump_configuration( sio )
|
659
|
+
assert_equal(
|
660
|
+
"A-logger::D-logger .............................. debug +A -T\n", sio.to_s)
|
661
|
+
|
662
|
+
log_b.level = :warn
|
663
|
+
log_b.trace = true
|
664
|
+
log_b._dump_configuration( sio )
|
665
|
+
assert_equal(
|
666
|
+
"A-logger::B-logger .............................. *warn +A +T\n", sio.to_s)
|
667
|
+
|
668
|
+
log_c.additive = false
|
669
|
+
log_c._dump_configuration( sio )
|
670
|
+
assert_equal(
|
671
|
+
"A-logger::B-logger::C-logger .................... warn -A -T\n", sio.to_s)
|
672
|
+
|
673
|
+
# with an indent specified
|
674
|
+
log_a._dump_configuration( sio, 4 )
|
675
|
+
assert_equal(
|
676
|
+
" A-logger .................................... debug +A -T\n", sio.to_s)
|
677
|
+
|
678
|
+
log_b._dump_configuration( sio, 8 )
|
679
|
+
assert_equal(
|
680
|
+
" A-logger::B-logger ...................... *warn +A +T\n", sio.to_s)
|
681
|
+
|
682
|
+
log_c._dump_configuration( sio, 10 )
|
683
|
+
assert_equal(
|
684
|
+
" A-logger::B-logger::C-logger .......... warn -A -T\n", sio.to_s)
|
685
|
+
|
686
|
+
log_d._dump_configuration( sio, 22 )
|
687
|
+
assert_equal(
|
688
|
+
" A-logger::D-logger ........ debug +A -T\n", sio.to_s)
|
689
|
+
|
690
|
+
log_c.level = 0
|
691
|
+
log_c._dump_configuration( sio, 26 )
|
692
|
+
assert_equal(
|
693
|
+
" A-logger::B...::C-logger *debug -A -T\n", sio.to_s)
|
694
|
+
end
|
695
|
+
|
696
|
+
end # class TestLogger
|
697
|
+
end # module TestLogging
|
698
|
+
|
699
|
+
# EOF
|