logging 2.0.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +8 -5
- data/History.txt +59 -0
- data/LICENSE +22 -0
- data/README.md +20 -41
- data/Rakefile +2 -2
- data/examples/appenders.rb +1 -1
- data/examples/layouts.rb +1 -1
- data/examples/lazy.rb +1 -1
- data/examples/mdc.rb +2 -2
- data/examples/rails4.rb +21 -0
- data/examples/reusing_layouts.rb +51 -0
- data/lib/logging.rb +99 -9
- data/lib/logging/appender.rb +13 -34
- data/lib/logging/appenders/buffering.rb +130 -59
- data/lib/logging/appenders/console.rb +68 -57
- data/lib/logging/appenders/file.rb +43 -22
- data/lib/logging/appenders/io.rb +22 -16
- data/lib/logging/appenders/rolling_file.rb +60 -26
- data/lib/logging/appenders/string_io.rb +1 -1
- data/lib/logging/appenders/syslog.rb +3 -4
- data/lib/logging/color_scheme.rb +1 -1
- data/lib/logging/diagnostic_context.rb +100 -73
- data/lib/logging/layout.rb +144 -16
- data/lib/logging/layouts/parseable.rb +50 -12
- data/lib/logging/layouts/pattern.rb +8 -9
- data/lib/logging/log_event.rb +19 -12
- data/lib/logging/logger.rb +117 -95
- data/lib/logging/proxy.rb +1 -1
- data/lib/logging/rails_compat.rb +4 -13
- data/lib/logging/version.rb +1 -1
- data/logging.gemspec +31 -32
- data/script/console +8 -0
- data/test/appenders/{test_periodic_flushing.rb → test_async_flushing.rb} +67 -14
- data/test/appenders/test_buffered_io.rb +19 -18
- data/test/appenders/test_console.rb +55 -12
- data/test/appenders/test_file.rb +48 -28
- data/test/appenders/test_rolling_file.rb +18 -12
- data/test/appenders/test_syslog.rb +6 -0
- data/test/benchmark.rb +42 -18
- data/test/layouts/test_json.rb +14 -1
- data/test/layouts/test_nested_exceptions.rb +124 -0
- data/test/layouts/test_pattern.rb +16 -3
- data/test/layouts/test_yaml.rb +15 -1
- data/test/performance.rb +66 -0
- data/test/setup.rb +26 -30
- data/test/test_appender.rb +2 -4
- data/test/test_layout.rb +49 -0
- data/test/test_log_event.rb +10 -2
- data/test/test_logger.rb +20 -3
- data/test/test_logging.rb +75 -4
- data/test/test_mapped_diagnostic_context.rb +15 -6
- data/test/test_nested_diagnostic_context.rb +6 -1
- metadata +23 -17
data/test/setup.rb
CHANGED
@@ -1,42 +1,38 @@
|
|
1
|
-
|
2
1
|
# Equivalent to a header guard in C/C++
|
3
2
|
# Used to prevent the class/module from being loaded more than once
|
4
3
|
unless defined? LOGGING_TEST_SETUP
|
5
4
|
LOGGING_TEST_SETUP = true
|
6
5
|
|
7
|
-
require
|
8
|
-
require
|
9
|
-
|
10
|
-
require 'turn'
|
11
|
-
rescue LoadError; end
|
6
|
+
require "rubygems"
|
7
|
+
require "test/unit"
|
8
|
+
require "tmpdir"
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
10
|
+
LOGGING_TEST_TMPDIR = Dir.mktmpdir("logging")
|
11
|
+
Test::Unit.at_exit do
|
12
|
+
FileUtils.remove_entry(LOGGING_TEST_TMPDIR)
|
13
|
+
end
|
17
14
|
|
18
|
-
|
15
|
+
if Test::Unit::TestCase.respond_to? :test_order=
|
16
|
+
Test::Unit::TestCase.test_order = :random
|
17
|
+
end
|
19
18
|
|
19
|
+
require File.expand_path("../../lib/logging", __FILE__)
|
20
20
|
|
21
21
|
module TestLogging
|
22
|
-
module LoggingTestCase
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
module LoggingTestCase
|
23
|
+
|
24
|
+
def setup
|
25
|
+
super
|
26
|
+
Logging.reset
|
27
|
+
@tmpdir = LOGGING_TEST_TMPDIR
|
28
|
+
FileUtils.rm_rf(Dir.glob(File.join(@tmpdir, "*")))
|
29
|
+
end
|
30
|
+
|
31
|
+
def teardown
|
32
|
+
super
|
33
|
+
FileUtils.rm_rf(Dir.glob(File.join(@tmpdir, "*")))
|
34
|
+
end
|
31
35
|
end
|
36
|
+
end
|
32
37
|
|
33
|
-
|
34
|
-
super
|
35
|
-
FileUtils.rm_rf TMP
|
36
|
-
end
|
37
|
-
|
38
|
-
end # LoggingTestCase
|
39
|
-
end # TestLogging
|
40
|
-
|
41
|
-
end # defined?
|
42
|
-
|
38
|
+
end
|
data/test/test_appender.rb
CHANGED
@@ -189,11 +189,9 @@ module TestLogging
|
|
189
189
|
assert_equal 'test_appender', @appender.name
|
190
190
|
end
|
191
191
|
|
192
|
-
def
|
193
|
-
|
194
|
-
assert_equal expected, @appender.inspect
|
192
|
+
def test_to_s
|
193
|
+
assert_equal "<Appender name=\"test_appender\">", @appender.to_s
|
195
194
|
end
|
196
|
-
|
197
195
|
end # class TestAppender
|
198
196
|
end # module TestLogging
|
199
197
|
|
data/test/test_layout.rb
CHANGED
@@ -111,6 +111,55 @@ module TestLogging
|
|
111
111
|
assert_raise(ArgumentError) {::Logging::Layout.new :backtrace => 'foo'}
|
112
112
|
end
|
113
113
|
|
114
|
+
def test_backtrace_accessors
|
115
|
+
assert @layout.backtrace?
|
116
|
+
|
117
|
+
@layout.backtrace = :off
|
118
|
+
refute @layout.backtrace?
|
119
|
+
|
120
|
+
@layout.backtrace = 'on'
|
121
|
+
assert_equal true, @layout.backtrace
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_utc_offset
|
125
|
+
assert_nil @layout.utc_offset
|
126
|
+
|
127
|
+
@layout.utc_offset = 0
|
128
|
+
assert_equal 0, @layout.utc_offset
|
129
|
+
|
130
|
+
@layout.utc_offset = "UTC"
|
131
|
+
assert_equal 0, @layout.utc_offset
|
132
|
+
|
133
|
+
@layout.utc_offset = "+01:00"
|
134
|
+
assert_equal "+01:00", @layout.utc_offset
|
135
|
+
|
136
|
+
assert_raise(ArgumentError) {@layout.utc_offset = "06:00"}
|
137
|
+
|
138
|
+
@layout.utc_offset = nil
|
139
|
+
::Logging.utc_offset = "UTC"
|
140
|
+
assert_nil @layout.utc_offset
|
141
|
+
|
142
|
+
layout = ::Logging::Layout.new
|
143
|
+
assert_equal 0, layout.utc_offset
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_apply_utc_offset
|
147
|
+
time = Time.now.freeze
|
148
|
+
|
149
|
+
offset_time = @layout.apply_utc_offset(time)
|
150
|
+
assert_same time, offset_time
|
151
|
+
|
152
|
+
@layout.utc_offset = "UTC"
|
153
|
+
offset_time = @layout.apply_utc_offset(time)
|
154
|
+
assert_not_same time, offset_time
|
155
|
+
assert offset_time.utc?
|
156
|
+
|
157
|
+
@layout.utc_offset = "+01:00"
|
158
|
+
offset_time = @layout.apply_utc_offset(time)
|
159
|
+
assert_not_same time, offset_time
|
160
|
+
assert !offset_time.utc?
|
161
|
+
assert_equal 3600, offset_time.utc_offset
|
162
|
+
end
|
114
163
|
end # class TestLayout
|
115
164
|
end # module TestLogging
|
116
165
|
|
data/test/test_log_event.rb
CHANGED
@@ -34,6 +34,14 @@ module TestLogging
|
|
34
34
|
assert_match %r/test_log_event.rb\z/, @appender.event.file
|
35
35
|
end
|
36
36
|
|
37
|
+
def test_file_with_basepath
|
38
|
+
::Logging.basepath = File.expand_path("../../", __FILE__)
|
39
|
+
|
40
|
+
@logger.caller_tracing = true
|
41
|
+
@logger.warn "warning message"
|
42
|
+
assert_equal "test/test_log_event.rb", @appender.event.file
|
43
|
+
end
|
44
|
+
|
37
45
|
def test_level
|
38
46
|
assert_equal 1, @event.level
|
39
47
|
end
|
@@ -60,12 +68,12 @@ module TestLogging
|
|
60
68
|
assert_equal 'MyLogger', @event.logger
|
61
69
|
end
|
62
70
|
|
63
|
-
def
|
71
|
+
def test_method_name
|
64
72
|
assert_equal '', @event.file
|
65
73
|
|
66
74
|
@logger.caller_tracing = true
|
67
75
|
@logger.debug 'debug message'
|
68
|
-
assert_equal '
|
76
|
+
assert_equal 'test_method_name', @appender.event.method_name
|
69
77
|
end
|
70
78
|
|
71
79
|
end # class TestLogEvent
|
data/test/test_logger.rb
CHANGED
@@ -33,6 +33,16 @@ module TestLogging
|
|
33
33
|
assert_nil a1.readline
|
34
34
|
assert_nil a2.readline
|
35
35
|
|
36
|
+
log.add(1) { "block style message" }
|
37
|
+
assert_equal " INFO A Logger : block style message\n", a1.readline
|
38
|
+
assert_nil a1.readline
|
39
|
+
assert_nil a2.readline
|
40
|
+
|
41
|
+
log.add(1, nil, 'this should be logged (when used by Rails.logger.extend(ActiveSupport::Logger.broadcast())')
|
42
|
+
assert_equal " INFO A Logger : this should be logged (when used by Rails.logger.extend(ActiveSupport::Logger.broadcast())\n", a1.readline
|
43
|
+
assert_nil a1.readline
|
44
|
+
assert_nil a2.readline
|
45
|
+
|
36
46
|
log.add(2,[1,2,3,4])
|
37
47
|
assert_equal " WARN A Logger : <Array> #{[1,2,3,4]}\n", a1.readline
|
38
48
|
assert_nil a1.readline
|
@@ -76,6 +86,10 @@ module TestLogging
|
|
76
86
|
assert_nil a2.readline
|
77
87
|
end
|
78
88
|
|
89
|
+
def test_add_block
|
90
|
+
|
91
|
+
end
|
92
|
+
|
79
93
|
def test_add_appenders
|
80
94
|
log = ::Logging::Logger.new 'A'
|
81
95
|
|
@@ -251,11 +265,14 @@ module TestLogging
|
|
251
265
|
assert_nil a2.readline
|
252
266
|
end
|
253
267
|
|
254
|
-
def
|
268
|
+
def test_inspect_matches_default
|
255
269
|
root = ::Logging::Logger.new :root
|
256
270
|
|
257
|
-
|
258
|
-
|
271
|
+
# `to_s` triggers the default inspect behavior
|
272
|
+
expected = root.to_s.match(/0x[a-f\d]+/)[0]
|
273
|
+
actual = root.inspect.match(/0x[a-f\d]+/)[0]
|
274
|
+
|
275
|
+
assert_equal expected, actual
|
259
276
|
end
|
260
277
|
|
261
278
|
def test_level
|
data/test/test_logging.rb
CHANGED
@@ -11,8 +11,8 @@ module TestLogging
|
|
11
11
|
@levels = ::Logging::LEVELS
|
12
12
|
@lnames = ::Logging::LNAMES
|
13
13
|
|
14
|
-
@fn = File.join(
|
15
|
-
@glob = File.join(
|
14
|
+
@fn = File.join(@tmpdir, 'test.log')
|
15
|
+
@glob = File.join(@tmpdir, '*.log')
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_backtrace
|
@@ -39,6 +39,52 @@ module TestLogging
|
|
39
39
|
assert_raise(ArgumentError) {::Logging.backtrace 'foo'}
|
40
40
|
end
|
41
41
|
|
42
|
+
def test_utc_offset
|
43
|
+
assert_nil ::Logging.utc_offset
|
44
|
+
|
45
|
+
::Logging.utc_offset = 0
|
46
|
+
assert_equal 0, ::Logging.utc_offset
|
47
|
+
|
48
|
+
::Logging.utc_offset = "UTC"
|
49
|
+
assert_equal 0, ::Logging.utc_offset
|
50
|
+
|
51
|
+
::Logging.utc_offset = "+01:00"
|
52
|
+
assert_equal "+01:00", ::Logging.utc_offset
|
53
|
+
|
54
|
+
assert_raise(ArgumentError) {::Logging.utc_offset = "06:00"}
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_cause_depth
|
58
|
+
assert_equal ::Logging::DEFAULT_CAUSE_DEPTH, ::Logging.cause_depth
|
59
|
+
|
60
|
+
::Logging.cause_depth = 0
|
61
|
+
assert_equal 0, ::Logging.cause_depth
|
62
|
+
|
63
|
+
::Logging.cause_depth = nil
|
64
|
+
assert_equal ::Logging::DEFAULT_CAUSE_DEPTH, ::Logging.cause_depth
|
65
|
+
|
66
|
+
::Logging.cause_depth = "1024"
|
67
|
+
assert_equal 1024, ::Logging.cause_depth
|
68
|
+
|
69
|
+
::Logging.cause_depth = -1
|
70
|
+
assert_equal ::Logging::DEFAULT_CAUSE_DEPTH, ::Logging.cause_depth
|
71
|
+
|
72
|
+
assert_raise(ArgumentError) {::Logging.cause_depth = "foo"}
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_basepath
|
76
|
+
assert_nil ::Logging.basepath
|
77
|
+
|
78
|
+
::Logging.basepath = ""
|
79
|
+
assert_nil ::Logging.basepath
|
80
|
+
|
81
|
+
::Logging.basepath = "./"
|
82
|
+
assert_equal File.expand_path("../../", __FILE__), ::Logging.basepath
|
83
|
+
|
84
|
+
::Logging.reset
|
85
|
+
assert_nil ::Logging.basepath
|
86
|
+
end
|
87
|
+
|
42
88
|
def test_logger
|
43
89
|
assert_raise(TypeError) {::Logging.logger []}
|
44
90
|
|
@@ -207,6 +253,31 @@ module TestLogging
|
|
207
253
|
assert_match %r/\d+\.\d+\.\d+/, ::Logging.version
|
208
254
|
end
|
209
255
|
|
210
|
-
|
211
|
-
|
256
|
+
class Failer
|
257
|
+
class WriteError < StandardError ; end
|
258
|
+
def self.write(*args)
|
259
|
+
raise WriteError.new("Oh noooooo")
|
260
|
+
end
|
261
|
+
end
|
212
262
|
|
263
|
+
def test_error_handling
|
264
|
+
logger = ::Logging.logger Failer, 2, 100
|
265
|
+
logger.appenders.first.level = :debug
|
266
|
+
|
267
|
+
# No errors are raised by default
|
268
|
+
logger.fatal 'this is a debug message'
|
269
|
+
# Always reset the level; we disable appenders that raise by setting them
|
270
|
+
# to :off
|
271
|
+
logger.appenders.first.level = :debug
|
272
|
+
|
273
|
+
begin
|
274
|
+
Logging.raise_errors = true
|
275
|
+
assert_raises Failer::WriteError do
|
276
|
+
logger.fatal 'this fails because the file descriptor is closed'
|
277
|
+
end
|
278
|
+
ensure
|
279
|
+
Logging.raise_errors = false
|
280
|
+
end
|
281
|
+
end
|
282
|
+
end
|
283
|
+
end
|
@@ -105,12 +105,21 @@ module TestLogging
|
|
105
105
|
|
106
106
|
assert_not_equal context.object_id, Logging.mdc.context.object_id
|
107
107
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
108
|
+
if Logging::INHERIT_CONTEXT
|
109
|
+
assert_equal 1, Logging.mdc['foo']
|
110
|
+
assert_equal 'buz', Logging.mdc['baz']
|
111
|
+
assert_equal 'something else', Logging.mdc['foobar']
|
112
|
+
assert_nil Logging.mdc['unique']
|
113
|
+
|
114
|
+
assert_equal 1, Logging.mdc.stack.length
|
115
|
+
else
|
116
|
+
assert_nil Logging.mdc['foo']
|
117
|
+
assert_nil Logging.mdc['baz']
|
118
|
+
assert_nil Logging.mdc['foobar']
|
119
|
+
assert_nil Logging.mdc['unique']
|
120
|
+
|
121
|
+
assert_equal 1, Logging.mdc.stack.length
|
122
|
+
end
|
114
123
|
}
|
115
124
|
|
116
125
|
Thread.pass until t.status == 'sleep'
|
@@ -85,7 +85,12 @@ module TestLogging
|
|
85
85
|
sleep
|
86
86
|
|
87
87
|
assert_not_equal ary.object_id, Logging.ndc.context.object_id
|
88
|
-
|
88
|
+
|
89
|
+
if Logging::INHERIT_CONTEXT
|
90
|
+
assert_equal %w[first second], Logging.ndc.context
|
91
|
+
else
|
92
|
+
assert_empty Logging.ndc.context
|
93
|
+
end
|
89
94
|
}
|
90
95
|
|
91
96
|
Thread.pass until t.status == 'sleep'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Pease
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: little-plugger
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.14'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.14'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: test-unit
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.3'
|
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
|
-
version: '
|
54
|
+
version: '3.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bones-git
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,16 +72,16 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 3.8.
|
75
|
+
version: 3.8.4
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 3.8.
|
82
|
+
version: 3.8.4
|
83
83
|
description: |-
|
84
|
-
Logging is a flexible logging library for use in Ruby programs based on the
|
84
|
+
**Logging** is a flexible logging library for use in Ruby programs based on the
|
85
85
|
design of Java's log4j library. It features a hierarchical logging system,
|
86
86
|
custom level names, multiple output destinations per log event, custom
|
87
87
|
formatting, and more.
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- ".gitignore"
|
95
95
|
- ".travis.yml"
|
96
96
|
- History.txt
|
97
|
+
- LICENSE
|
97
98
|
- README.md
|
98
99
|
- Rakefile
|
99
100
|
- examples/appenders.rb
|
@@ -108,6 +109,8 @@ files:
|
|
108
109
|
- examples/loggers.rb
|
109
110
|
- examples/mdc.rb
|
110
111
|
- examples/names.rb
|
112
|
+
- examples/rails4.rb
|
113
|
+
- examples/reusing_layouts.rb
|
111
114
|
- examples/rspec_integration.rb
|
112
115
|
- examples/simple.rb
|
113
116
|
- lib/logging.rb
|
@@ -142,11 +145,12 @@ files:
|
|
142
145
|
- lib/spec/logging_helper.rb
|
143
146
|
- logging.gemspec
|
144
147
|
- script/bootstrap
|
148
|
+
- script/console
|
149
|
+
- test/appenders/test_async_flushing.rb
|
145
150
|
- test/appenders/test_buffered_io.rb
|
146
151
|
- test/appenders/test_console.rb
|
147
152
|
- test/appenders/test_file.rb
|
148
153
|
- test/appenders/test_io.rb
|
149
|
-
- test/appenders/test_periodic_flushing.rb
|
150
154
|
- test/appenders/test_rolling_file.rb
|
151
155
|
- test/appenders/test_string_io.rb
|
152
156
|
- test/appenders/test_syslog.rb
|
@@ -154,8 +158,10 @@ files:
|
|
154
158
|
- test/layouts/test_basic.rb
|
155
159
|
- test/layouts/test_color_pattern.rb
|
156
160
|
- test/layouts/test_json.rb
|
161
|
+
- test/layouts/test_nested_exceptions.rb
|
157
162
|
- test/layouts/test_pattern.rb
|
158
163
|
- test/layouts/test_yaml.rb
|
164
|
+
- test/performance.rb
|
159
165
|
- test/setup.rb
|
160
166
|
- test/test_appender.rb
|
161
167
|
- test/test_color_scheme.rb
|
@@ -173,7 +179,7 @@ files:
|
|
173
179
|
homepage: http://rubygems.org/gems/logging
|
174
180
|
licenses: []
|
175
181
|
metadata: {}
|
176
|
-
post_install_message:
|
182
|
+
post_install_message:
|
177
183
|
rdoc_options:
|
178
184
|
- "--main"
|
179
185
|
- README.md
|
@@ -190,23 +196,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
196
|
- !ruby/object:Gem::Version
|
191
197
|
version: '0'
|
192
198
|
requirements: []
|
193
|
-
|
194
|
-
|
195
|
-
signing_key:
|
199
|
+
rubygems_version: 3.0.1
|
200
|
+
signing_key:
|
196
201
|
specification_version: 4
|
197
202
|
summary: A flexible and extendable logging library for Ruby
|
198
203
|
test_files:
|
204
|
+
- test/appenders/test_async_flushing.rb
|
199
205
|
- test/appenders/test_buffered_io.rb
|
200
206
|
- test/appenders/test_console.rb
|
201
207
|
- test/appenders/test_file.rb
|
202
208
|
- test/appenders/test_io.rb
|
203
|
-
- test/appenders/test_periodic_flushing.rb
|
204
209
|
- test/appenders/test_rolling_file.rb
|
205
210
|
- test/appenders/test_string_io.rb
|
206
211
|
- test/appenders/test_syslog.rb
|
207
212
|
- test/layouts/test_basic.rb
|
208
213
|
- test/layouts/test_color_pattern.rb
|
209
214
|
- test/layouts/test_json.rb
|
215
|
+
- test/layouts/test_nested_exceptions.rb
|
210
216
|
- test/layouts/test_pattern.rb
|
211
217
|
- test/layouts/test_yaml.rb
|
212
218
|
- test/test_appender.rb
|