Skip to content

Commit a516175

Browse files
committed
Set shift parameters at reopen
Keep parameters already set, and do not clear at reopen to a non-file device. Fix #55.
1 parent d1d704a commit a516175

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

lib/logger/log_device.rb

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,7 @@ def initialize(log = nil, shift_age: nil, shift_size: nil, shift_period_suffix:
1717
@reraise_write_errors = reraise_write_errors
1818
mon_initialize
1919
set_dev(log)
20-
if @filename
21-
@shift_age = shift_age || 7
22-
@shift_size = shift_size || 1048576
23-
@shift_period_suffix = shift_period_suffix || '%Y%m%d'
24-
25-
unless @shift_age.is_a?(Integer)
26-
base_time = @dev.respond_to?(:stat) ? @dev.stat.mtime : Time.now
27-
@next_rotate_time = next_rotate_time(base_time, @shift_age)
28-
end
29-
end
20+
set_shift(shift_age, shift_size, shift_period_suffix)
3021
end
3122

3223
def write(message)
@@ -76,6 +67,7 @@ def reopen(log = nil)
7667
@filename = nil
7768
end
7869
set_dev(log)
70+
set_shift
7971
end
8072
end
8173
self
@@ -99,6 +91,19 @@ def set_dev(log)
9991
end
10092
end
10193

94+
def set_shift(shift_age = @shift_age, shift_size = @shift_size, shift_period_suffix = @shift_period_suffix)
95+
if @filename
96+
@shift_age = shift_age || 7
97+
@shift_size = shift_size || 1048576
98+
@shift_period_suffix = shift_period_suffix || '%Y%m%d'
99+
100+
unless @shift_age.is_a?(Integer)
101+
base_time = @dev.respond_to?(:stat) ? @dev.stat.mtime : Time.now
102+
@next_rotate_time = next_rotate_time(base_time, @shift_age)
103+
end
104+
end
105+
end
106+
102107
def open_logfile(filename)
103108
begin
104109
File.open(filename, (File::WRONLY | File::APPEND))

test/logger/test_logdevice.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@
55
require 'tmpdir'
66

77
class TestLogDevice < Test::Unit::TestCase
8+
module LogDeviceAttributes
9+
refine Logger::LogDevice do
10+
attr_reader :shift_age, :shift_size, :shift_period_suffix, :binmode, :reraise_write_errors
11+
end
12+
end
13+
14+
using LogDeviceAttributes
15+
816
class LogExcnRaiser
917
def write(*arg)
1018
raise 'disk is full'
@@ -140,6 +148,7 @@ def test_reopen_io_by_file
140148
begin
141149
assert_file.exist?(@filename)
142150
assert_equal(@filename, logdev.filename)
151+
assert_equal(7, logdev.shift_age)
143152
assert_not_predicate(old_dev, :closed?)
144153
ensure
145154
logdev.close

0 commit comments

Comments
 (0)