From 87b12e8e5513f9f2ded1a7ebc93a0996ecfa3658 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 14 Feb 2025 17:17:40 +0900 Subject: [PATCH 1/3] Extract `shift_log_file` The common part of `shift_log_age` and `shift_log_period`. --- lib/logger/log_device.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/logger/log_device.rb b/lib/logger/log_device.rb index 45545fa..98d5eb7 100644 --- a/lib/logger/log_device.rb +++ b/lib/logger/log_device.rb @@ -205,10 +205,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 +221,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 From 4dbc1ac3b432f7ffbc18cda04891bb77a1cf6a59 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 14 Feb 2025 17:19:43 +0900 Subject: [PATCH 2/3] Let `lock_shift_log` return `true` on success In the case log shifted by another process, opened log device was returned. --- lib/logger/log_device.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/logger/log_device.rb b/lib/logger/log_device.rb index 98d5eb7..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 From 1f8966475133673ed698b4ad70cacae40a43d50d Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 14 Feb 2025 17:33:05 +0900 Subject: [PATCH 3/3] Remove duplicate and old variable --- test/logger/test_logdevice.rb | 2 -- 1 file changed, 2 deletions(-) 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;'}")