diff --git a/lib/logger/log_device.rb b/lib/logger/log_device.rb index 45545fa..dbbc0d9 100644 --- a/lib/logger/log_device.rb +++ b/lib/logger/log_device.rb @@ -184,6 +184,7 @@ def lock_shift_log @dev = open_logfile(@filename) end end + true rescue Errno::ENOENT # @filename file would not exist right after #rename and before #create_logfile if retry_limit <= 0 @@ -205,10 +206,7 @@ def shift_log_age File.rename("#{@filename}.#{i}", "#{@filename}.#{i+1}") end end - @dev.close rescue nil - File.rename("#{@filename}", "#{@filename}.0") - @dev = create_logfile(@filename) - return true + shift_log_file("#{@filename}.0") end def shift_log_period(period_end) @@ -224,8 +222,12 @@ def shift_log_period(period_end) break unless FileTest.exist?(age_file) end end + shift_log_file(age_file) + end + + def shift_log_file(shifted) @dev.close rescue nil - File.rename("#{@filename}", age_file) + File.rename(@filename, shifted) @dev = create_logfile(@filename) return true end diff --git a/test/logger/test_logdevice.rb b/test/logger/test_logdevice.rb index 05d3f63..a65ceaf 100644 --- a/test/logger/test_logdevice.rb +++ b/test/logger/test_logdevice.rb @@ -842,8 +842,6 @@ class << Time end end - env_tz_works = /linux|darwin|freebsd/ =~ RUBY_PLATFORM # borrow from test/ruby/test_time_tz.rb - def test_shifting_weekly_exist_file Dir.mktmpdir do |tmpdir| assert_in_out_err([{"TZ"=>"UTC"}, *%W"-I#{@top_dir} -rlogger -C#{tmpdir} -"], "#{<<-"begin;"}\n#{<<-'end;'}")