logging 2.2.1 → 2.3.1
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 +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +5 -3
- data/History.txt +26 -0
- data/Rakefile +2 -2
- data/examples/appenders.rb +1 -1
- data/examples/mdc.rb +2 -2
- data/lib/logging/appender.rb +5 -25
- data/lib/logging/appenders/buffering.rb +3 -3
- data/lib/logging/appenders/console.rb +27 -7
- data/lib/logging/appenders/file.rb +42 -21
- data/lib/logging/appenders/io.rb +14 -11
- data/lib/logging/appenders/rolling_file.rb +48 -24
- data/lib/logging/appenders/string_io.rb +1 -1
- data/lib/logging/appenders/syslog.rb +2 -3
- data/lib/logging/filter.rb +11 -4
- data/lib/logging/filters/level.rb +10 -7
- data/lib/logging/filters.rb +1 -1
- data/lib/logging/layout.rb +81 -15
- data/lib/logging/layouts/parseable.rb +43 -9
- data/lib/logging/layouts/pattern.rb +1 -1
- data/lib/logging/log_event.rb +7 -6
- data/lib/logging/logger.rb +15 -13
- data/lib/logging/proxy.rb +1 -1
- data/lib/logging/version.rb +1 -1
- data/lib/logging.rb +48 -7
- data/logging.gemspec +12 -13
- data/test/appenders/test_buffered_io.rb +16 -18
- data/test/appenders/test_console.rb +47 -12
- data/test/appenders/test_file.rb +38 -23
- data/test/appenders/test_rolling_file.rb +12 -12
- data/test/layouts/test_json.rb +1 -1
- data/test/layouts/test_nested_exceptions.rb +91 -19
- data/test/layouts/test_pattern.rb +1 -1
- data/test/layouts/test_yaml.rb +1 -1
- data/test/setup.rb +9 -5
- data/test/test_log_event.rb +2 -2
- data/test/test_logging.rb +47 -4
- metadata +12 -13
@@ -20,11 +20,10 @@ module TestAppenders
|
|
20
20
|
|
21
21
|
appender = Logging.appenders.stdout
|
22
22
|
assert_equal 'stdout', appender.name
|
23
|
-
assert_same STDOUT, appender.instance_variable_get(:@io)
|
24
23
|
|
25
|
-
appender.
|
26
|
-
|
27
|
-
assert_equal
|
24
|
+
io = appender.instance_variable_get(:@io)
|
25
|
+
assert_same STDOUT, io
|
26
|
+
assert_equal STDOUT.fileno, io.fileno
|
28
27
|
|
29
28
|
appender = Logging.appenders.stdout('foo')
|
30
29
|
assert_equal 'foo', appender.name
|
@@ -38,7 +37,26 @@ module TestAppenders
|
|
38
37
|
assert_equal 3, appender.level
|
39
38
|
end
|
40
39
|
|
41
|
-
|
40
|
+
def test_reopen
|
41
|
+
Logging::Repository.instance
|
42
|
+
|
43
|
+
appender = Logging.appenders.stdout
|
44
|
+
io = appender.instance_variable_get(:@io)
|
45
|
+
|
46
|
+
appender.close
|
47
|
+
assert appender.closed?
|
48
|
+
refute io.closed?
|
49
|
+
refute STDOUT.closed?
|
50
|
+
|
51
|
+
appender.reopen
|
52
|
+
refute appender.closed?
|
53
|
+
|
54
|
+
new_io = appender.instance_variable_get(:@io)
|
55
|
+
assert_same io, new_io
|
56
|
+
refute new_io.closed?
|
57
|
+
refute io.closed?
|
58
|
+
end
|
59
|
+
end
|
42
60
|
|
43
61
|
class TestStderr < Test::Unit::TestCase
|
44
62
|
include LoggingTestCase
|
@@ -48,11 +66,10 @@ module TestAppenders
|
|
48
66
|
|
49
67
|
appender = Logging.appenders.stderr
|
50
68
|
assert_equal 'stderr', appender.name
|
51
|
-
assert_same STDERR, appender.instance_variable_get(:@io)
|
52
69
|
|
53
|
-
appender.
|
54
|
-
|
55
|
-
assert_equal
|
70
|
+
io = appender.instance_variable_get(:@io)
|
71
|
+
assert_same STDERR, io
|
72
|
+
assert_equal STDERR.fileno, io.fileno
|
56
73
|
|
57
74
|
appender = Logging.appenders.stderr('foo')
|
58
75
|
assert_equal 'foo', appender.name
|
@@ -66,8 +83,26 @@ module TestAppenders
|
|
66
83
|
assert_equal 3, appender.level
|
67
84
|
end
|
68
85
|
|
69
|
-
|
86
|
+
def test_reopen
|
87
|
+
Logging::Repository.instance
|
70
88
|
|
71
|
-
|
72
|
-
|
89
|
+
appender = Logging.appenders.stderr
|
90
|
+
io = appender.instance_variable_get(:@io)
|
91
|
+
|
92
|
+
appender.close
|
93
|
+
assert appender.closed?
|
94
|
+
refute io.closed?
|
95
|
+
refute STDERR.closed?
|
96
|
+
|
97
|
+
appender.reopen
|
98
|
+
refute appender.closed?
|
99
|
+
|
100
|
+
new_io = appender.instance_variable_get(:@io)
|
101
|
+
assert_same io, new_io
|
102
|
+
refute new_io.closed?
|
103
|
+
refute io.closed?
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
73
108
|
|
data/test/appenders/test_file.rb
CHANGED
@@ -14,10 +14,10 @@ module TestAppenders
|
|
14
14
|
super
|
15
15
|
Logging.init
|
16
16
|
|
17
|
-
FileUtils.mkdir [File.join(
|
18
|
-
FileUtils.chmod 0555, File.join(
|
19
|
-
FileUtils.touch File.join(
|
20
|
-
FileUtils.chmod 0444, File.join(
|
17
|
+
FileUtils.mkdir [File.join(@tmpdir, 'dir'), File.join(@tmpdir, 'uw_dir')]
|
18
|
+
FileUtils.chmod 0555, File.join(@tmpdir, 'uw_dir')
|
19
|
+
FileUtils.touch File.join(@tmpdir, 'uw_file')
|
20
|
+
FileUtils.chmod 0444, File.join(@tmpdir, 'uw_file')
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_factory_method_validates_input
|
@@ -27,27 +27,27 @@ module TestAppenders
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_class_assert_valid_logfile
|
30
|
-
log = File.join(
|
30
|
+
log = File.join(@tmpdir, 'uw_dir', 'file.log')
|
31
31
|
assert_raise(ArgumentError) do
|
32
32
|
Logging.appenders.file(log).class.assert_valid_logfile(log)
|
33
33
|
end
|
34
34
|
|
35
|
-
log = File.join(
|
35
|
+
log = File.join(@tmpdir, 'dir')
|
36
36
|
assert_raise(ArgumentError) do
|
37
37
|
Logging.appenders.file(log).class.assert_valid_logfile(log)
|
38
38
|
end
|
39
39
|
|
40
|
-
log = File.join(
|
40
|
+
log = File.join(@tmpdir, 'uw_file')
|
41
41
|
assert_raise(ArgumentError) do
|
42
42
|
Logging.appenders.file(log).class.assert_valid_logfile(log)
|
43
43
|
end
|
44
44
|
|
45
|
-
log = File.join(
|
45
|
+
log = File.join(@tmpdir, 'file.log')
|
46
46
|
assert Logging.appenders.file(log).class.assert_valid_logfile(log)
|
47
47
|
end
|
48
48
|
|
49
49
|
def test_initialize
|
50
|
-
log = File.join(
|
50
|
+
log = File.join(@tmpdir, 'file.log')
|
51
51
|
appender = Logging.appenders.file(NAME, :filename => log)
|
52
52
|
assert_equal 'logfile', appender.name
|
53
53
|
assert_equal ::File.expand_path(log), appender.filename
|
@@ -87,7 +87,7 @@ module TestAppenders
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def test_changing_directories
|
90
|
-
log = File.join(
|
90
|
+
log = File.join(@tmpdir, 'file.log')
|
91
91
|
appender = Logging.appenders.file(NAME, :filename => log)
|
92
92
|
|
93
93
|
assert_equal 'logfile', appender.name
|
@@ -95,29 +95,45 @@ module TestAppenders
|
|
95
95
|
|
96
96
|
begin
|
97
97
|
pwd = Dir.pwd
|
98
|
-
Dir.chdir
|
98
|
+
Dir.chdir @tmpdir
|
99
99
|
assert_nothing_raised { appender.reopen }
|
100
100
|
ensure
|
101
101
|
Dir.chdir pwd
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
-
|
105
|
+
def test_encoding
|
106
|
+
log = File.join(@tmpdir, 'file-encoding.log')
|
107
|
+
appender = Logging.appenders.file(NAME, :filename => log, :encoding => 'ASCII')
|
106
108
|
|
107
|
-
|
108
|
-
|
109
|
-
|
109
|
+
appender << "A normal line of text\n"
|
110
|
+
appender << "ümlaut\n"
|
111
|
+
appender.close
|
110
112
|
|
111
|
-
|
112
|
-
|
113
|
-
|
113
|
+
lines = File.readlines(log, :encoding => 'UTF-8')
|
114
|
+
assert_equal "A normal line of text\n", lines[0]
|
115
|
+
assert_equal "ümlaut\n", lines[1]
|
114
116
|
|
115
|
-
|
116
|
-
|
117
|
-
|
117
|
+
cleanup
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_reopening_should_not_truncate_the_file
|
121
|
+
log = File.join(@tmpdir, 'truncate.log')
|
122
|
+
appender = Logging.appenders.file(NAME, filename: log, truncate: true)
|
123
|
+
|
124
|
+
appender << "This will be the first line\n"
|
125
|
+
appender << "This will be the second line\n"
|
126
|
+
appender << "This will be the third line\n"
|
127
|
+
appender.reopen
|
118
128
|
|
119
|
-
|
129
|
+
File.open(log, 'r') do |file|
|
130
|
+
assert_equal "This will be the first line\n", file.readline
|
131
|
+
assert_equal "This will be the second line\n", file.readline
|
132
|
+
assert_equal "This will be the third line\n", file.readline
|
133
|
+
assert_raise(EOFError) {file.readline}
|
120
134
|
end
|
135
|
+
|
136
|
+
cleanup
|
121
137
|
end
|
122
138
|
|
123
139
|
private
|
@@ -127,7 +143,6 @@ module TestAppenders
|
|
127
143
|
Logging.appenders[NAME] = nil
|
128
144
|
end
|
129
145
|
end
|
130
|
-
|
131
146
|
end # TestFile
|
132
147
|
|
133
148
|
end # TestAppenders
|
@@ -13,9 +13,9 @@ module TestAppenders
|
|
13
13
|
super
|
14
14
|
Logging.init
|
15
15
|
|
16
|
-
@fn = File.expand_path('test.log',
|
17
|
-
@fn_fmt = File.expand_path('test.%d.log',
|
18
|
-
@glob = File.expand_path('*.log',
|
16
|
+
@fn = File.expand_path('test.log', @tmpdir)
|
17
|
+
@fn_fmt = File.expand_path('test.%d.log', @tmpdir)
|
18
|
+
@glob = File.expand_path('*.log', @tmpdir)
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_factory_method_validates_input
|
@@ -93,8 +93,8 @@ module TestAppenders
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def test_age
|
96
|
-
d_glob = File.join(
|
97
|
-
dt_glob = File.join(
|
96
|
+
d_glob = File.join(@tmpdir, 'test.*.log')
|
97
|
+
dt_glob = File.join(@tmpdir, 'test.*-*.log')
|
98
98
|
age_fn = @fn + '.age'
|
99
99
|
|
100
100
|
assert_equal [], Dir.glob(@glob)
|
@@ -205,7 +205,7 @@ module TestAppenders
|
|
205
205
|
|
206
206
|
begin
|
207
207
|
pwd = Dir.pwd
|
208
|
-
Dir.chdir
|
208
|
+
Dir.chdir @tmpdir
|
209
209
|
|
210
210
|
ap << 'X' * 100; ap.flush
|
211
211
|
assert_equal 1, Dir.glob(@glob).length
|
@@ -249,9 +249,9 @@ module TestAppenders
|
|
249
249
|
end
|
250
250
|
|
251
251
|
def test_custom_numberd_filename
|
252
|
-
fn = File.expand_path('test.log{{.%d}}',
|
253
|
-
filename = File.expand_path('test.log',
|
254
|
-
glob = File.expand_path('test.log.*',
|
252
|
+
fn = File.expand_path('test.log{{.%d}}', @tmpdir)
|
253
|
+
filename = File.expand_path('test.log', @tmpdir)
|
254
|
+
glob = File.expand_path('test.log.*', @tmpdir)
|
255
255
|
|
256
256
|
assert_equal [], Dir.glob(glob)
|
257
257
|
ap = Logging.appenders.rolling_file(NAME, :filename => fn, :size => 100, :keep => 2)
|
@@ -285,10 +285,10 @@ module TestAppenders
|
|
285
285
|
end
|
286
286
|
|
287
287
|
def test_custom_timestamp_filename
|
288
|
-
fn = File.expand_path('test{{.%S:%M}}.log',
|
289
|
-
filename = File.expand_path('test.log',
|
288
|
+
fn = File.expand_path('test{{.%S:%M}}.log', @tmpdir)
|
289
|
+
filename = File.expand_path('test.log', @tmpdir)
|
290
290
|
age_file = filename + '.age'
|
291
|
-
glob = File.expand_path('test.*.log',
|
291
|
+
glob = File.expand_path('test.*.log', @tmpdir)
|
292
292
|
|
293
293
|
assert_equal [], Dir.glob(glob)
|
294
294
|
ap = Logging.appenders.rolling_file(NAME, :filename => fn, :age => 1, :keep => 2)
|
data/test/layouts/test_json.rb
CHANGED
@@ -78,7 +78,7 @@ module TestLayouts
|
|
78
78
|
'log message', false)
|
79
79
|
event.file = 'test_file.rb'
|
80
80
|
event.line = 123
|
81
|
-
event.
|
81
|
+
event.method_name = 'method_name'
|
82
82
|
|
83
83
|
@layout.items = %w[logger]
|
84
84
|
assert_equal %Q[{"logger":"TestLogger"}\n], @layout.format(event)
|
@@ -7,46 +7,118 @@ module TestLogging
|
|
7
7
|
include LoggingTestCase
|
8
8
|
|
9
9
|
def test_basic_format_obj
|
10
|
+
err = nil
|
10
11
|
begin
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
begin
|
13
|
+
raise ArgumentError, 'nested exception'
|
14
|
+
rescue
|
15
|
+
raise StandardError, 'root exception'
|
16
|
+
end
|
17
|
+
rescue => e
|
18
|
+
err = e
|
14
19
|
end
|
15
|
-
|
20
|
+
|
16
21
|
layout = Logging.layouts.basic({})
|
17
|
-
log = layout.format_obj(
|
18
|
-
assert_not_nil log.index('<
|
22
|
+
log = layout.format_obj(err)
|
23
|
+
assert_not_nil log.index('<StandardError> root exception')
|
19
24
|
|
20
|
-
if
|
21
|
-
assert_not_nil log.index('<
|
22
|
-
|
25
|
+
if err.respond_to?(:cause)
|
26
|
+
assert_not_nil log.index('<ArgumentError> nested exception')
|
27
|
+
assert(log.index('<StandardError> root exception') < log.index('<ArgumentError> nested exception'))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_cause_depth_limiting
|
32
|
+
err = nil
|
33
|
+
begin
|
34
|
+
begin
|
35
|
+
begin
|
36
|
+
raise TypeError, 'nested exception 2'
|
37
|
+
rescue
|
38
|
+
raise ArgumentError, 'nested exception 1'
|
39
|
+
end
|
40
|
+
rescue
|
41
|
+
raise StandardError, 'root exception'
|
42
|
+
end
|
43
|
+
rescue => e
|
44
|
+
err = e
|
45
|
+
end
|
46
|
+
|
47
|
+
layout = Logging.layouts.basic(cause_depth: 1)
|
48
|
+
log = layout.format_obj(err)
|
49
|
+
assert_not_nil log.index('<StandardError> root exception')
|
50
|
+
|
51
|
+
if err.respond_to?(:cause)
|
52
|
+
assert_not_nil log.index('<ArgumentError> nested exception 1')
|
53
|
+
assert_nil log.index('<TypeError> nested exception 2')
|
54
|
+
assert_equal '--- Further #cause backtraces were omitted ---', log.split("\n\t").last
|
23
55
|
end
|
24
56
|
end
|
25
57
|
|
26
58
|
def test_parseable_format_obj
|
59
|
+
err = nil
|
27
60
|
begin
|
28
|
-
|
29
|
-
|
30
|
-
|
61
|
+
begin
|
62
|
+
raise ArgumentError, 'nested exception'
|
63
|
+
rescue
|
64
|
+
raise StandardError, 'root exception'
|
65
|
+
end
|
66
|
+
rescue => e
|
67
|
+
err = e
|
31
68
|
end
|
32
|
-
|
69
|
+
|
33
70
|
layout = Logging.layouts.parseable.new
|
34
|
-
log = layout.format_obj(
|
35
|
-
assert_equal
|
71
|
+
log = layout.format_obj(err)
|
72
|
+
assert_equal 'StandardError', log[:class]
|
36
73
|
assert_equal 'root exception', log[:message]
|
37
|
-
|
74
|
+
assert log[:backtrace].size > 0
|
38
75
|
|
39
|
-
if
|
76
|
+
if err.respond_to?(:cause)
|
40
77
|
assert_not_nil log[:cause]
|
41
78
|
|
42
79
|
log = log[:cause]
|
43
|
-
assert_equal
|
80
|
+
assert_equal 'ArgumentError', log[:class]
|
44
81
|
assert_equal 'nested exception', log[:message]
|
45
82
|
assert_nil log[:cause]
|
46
|
-
|
83
|
+
assert log[:backtrace].size > 0
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_parseable_cause_depth_limiting
|
88
|
+
err = nil
|
89
|
+
begin
|
90
|
+
begin
|
91
|
+
begin
|
92
|
+
raise TypeError, 'nested exception 2'
|
93
|
+
rescue
|
94
|
+
raise ArgumentError, 'nested exception 1'
|
95
|
+
end
|
96
|
+
rescue
|
97
|
+
raise StandardError, 'root exception'
|
98
|
+
end
|
99
|
+
rescue => e
|
100
|
+
err = e
|
101
|
+
end
|
102
|
+
|
103
|
+
layout = Logging.layouts.parseable.new(cause_depth: 1)
|
104
|
+
log = layout.format_obj(err)
|
105
|
+
|
106
|
+
assert_equal 'StandardError', log[:class]
|
107
|
+
assert_equal 'root exception', log[:message]
|
108
|
+
assert log[:backtrace].size > 0
|
109
|
+
|
110
|
+
if err.respond_to?(:cause)
|
111
|
+
assert_not_nil log[:cause]
|
112
|
+
|
113
|
+
log = log[:cause]
|
114
|
+
assert_equal 'ArgumentError', log[:class]
|
115
|
+
assert_equal 'nested exception 1', log[:message]
|
116
|
+
assert_equal({message: "Further #cause backtraces were omitted"}, log[:cause])
|
117
|
+
assert log[:backtrace].size > 0
|
47
118
|
end
|
48
119
|
end
|
49
120
|
end
|
50
121
|
end
|
51
122
|
end
|
52
123
|
|
124
|
+
require 'pp'
|
@@ -105,7 +105,7 @@ module TestLayouts
|
|
105
105
|
'log message', false)
|
106
106
|
event.file = 'test_file.rb'
|
107
107
|
event.line = '123'
|
108
|
-
event.
|
108
|
+
event.method_name = 'method_name'
|
109
109
|
|
110
110
|
@layout.pattern = '%c'
|
111
111
|
assert_equal 'TestLogger', @layout.format(event)
|
data/test/layouts/test_yaml.rb
CHANGED
@@ -68,7 +68,7 @@ module TestLayouts
|
|
68
68
|
'log message', false)
|
69
69
|
event.file = 'test_file.rb'
|
70
70
|
event.line = 123
|
71
|
-
event.
|
71
|
+
event.method_name = 'method_name'
|
72
72
|
|
73
73
|
@layout.items = %w[logger]
|
74
74
|
assert_match %r/\A--- ?\nlogger: TestLogger\n/, @layout.format(event)
|
data/test/setup.rb
CHANGED
@@ -5,6 +5,12 @@ LOGGING_TEST_SETUP = true
|
|
5
5
|
|
6
6
|
require "rubygems"
|
7
7
|
require "test/unit"
|
8
|
+
require "tmpdir"
|
9
|
+
|
10
|
+
LOGGING_TEST_TMPDIR = Dir.mktmpdir("logging")
|
11
|
+
Test::Unit.at_exit do
|
12
|
+
FileUtils.remove_entry(LOGGING_TEST_TMPDIR)
|
13
|
+
end
|
8
14
|
|
9
15
|
if Test::Unit::TestCase.respond_to? :test_order=
|
10
16
|
Test::Unit::TestCase.test_order = :random
|
@@ -15,18 +21,16 @@ require File.expand_path("../../lib/logging", __FILE__)
|
|
15
21
|
module TestLogging
|
16
22
|
module LoggingTestCase
|
17
23
|
|
18
|
-
TMP = 'tmp'
|
19
|
-
|
20
24
|
def setup
|
21
25
|
super
|
22
26
|
Logging.reset
|
23
|
-
|
24
|
-
FileUtils.
|
27
|
+
@tmpdir = LOGGING_TEST_TMPDIR
|
28
|
+
FileUtils.rm_rf(Dir.glob(File.join(@tmpdir, "*")))
|
25
29
|
end
|
26
30
|
|
27
31
|
def teardown
|
28
32
|
super
|
29
|
-
FileUtils.rm_rf
|
33
|
+
FileUtils.rm_rf(Dir.glob(File.join(@tmpdir, "*")))
|
30
34
|
end
|
31
35
|
end
|
32
36
|
end
|
data/test/test_log_event.rb
CHANGED
@@ -68,12 +68,12 @@ module TestLogging
|
|
68
68
|
assert_equal 'MyLogger', @event.logger
|
69
69
|
end
|
70
70
|
|
71
|
-
def
|
71
|
+
def test_method_name
|
72
72
|
assert_equal '', @event.file
|
73
73
|
|
74
74
|
@logger.caller_tracing = true
|
75
75
|
@logger.debug 'debug message'
|
76
|
-
assert_equal '
|
76
|
+
assert_equal 'test_method_name', @appender.event.method_name
|
77
77
|
end
|
78
78
|
|
79
79
|
end # class TestLogEvent
|
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
|
@@ -54,6 +54,24 @@ module TestLogging
|
|
54
54
|
assert_raise(ArgumentError) {::Logging.utc_offset = "06:00"}
|
55
55
|
end
|
56
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
|
+
|
57
75
|
def test_basepath
|
58
76
|
assert_nil ::Logging.basepath
|
59
77
|
|
@@ -235,6 +253,31 @@ module TestLogging
|
|
235
253
|
assert_match %r/\d+\.\d+\.\d+/, ::Logging.version
|
236
254
|
end
|
237
255
|
|
238
|
-
|
239
|
-
|
256
|
+
class Failer
|
257
|
+
class WriteError < StandardError ; end
|
258
|
+
def self.write(*args)
|
259
|
+
raise WriteError.new("Oh noooooo")
|
260
|
+
end
|
261
|
+
end
|
240
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
|
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.1
|
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: 2022-05-24 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
42
|
name: test-unit
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
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: '3.
|
54
|
+
version: '3.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bones-git
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 3.8.
|
75
|
+
version: 3.8.5
|
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.5
|
83
83
|
description: |-
|
84
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,
|
@@ -179,7 +179,7 @@ files:
|
|
179
179
|
homepage: http://rubygems.org/gems/logging
|
180
180
|
licenses: []
|
181
181
|
metadata: {}
|
182
|
-
post_install_message:
|
182
|
+
post_install_message:
|
183
183
|
rdoc_options:
|
184
184
|
- "--main"
|
185
185
|
- README.md
|
@@ -196,9 +196,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
- !ruby/object:Gem::Version
|
197
197
|
version: '0'
|
198
198
|
requirements: []
|
199
|
-
|
200
|
-
|
201
|
-
signing_key:
|
199
|
+
rubygems_version: 3.3.7
|
200
|
+
signing_key:
|
202
201
|
specification_version: 4
|
203
202
|
summary: A flexible and extendable logging library for Ruby
|
204
203
|
test_files:
|