From: tsukasa.oishi@... Date: 2016-11-16T06:03:29+00:00 Subject: [ruby-dev:49882] [Ruby trunk Bug#12948] Logger does not rotate even if there is a past file to rotate. Issue #12948 has been updated by 司 大石. ruby -v changed from ruby 2.3.1p112 to ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux] ---------------------------------------- Bug #12948: Logger does not rotate even if there is a past file to rotate. https://bugs.ruby-lang.org/issues/12948#change-61523 * Author: 司 大石 * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux] * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- Logger shift_age is "daily". "log" file's timestamp is yesterday or earlier. Logger does not rotate the file. Ruby version is 2.1 or older, Logger rotates the file. ~~~ruby require 'time' require 'logger' File.open("log", "w") {} File.utime(*[Time.mktime(2016, 1, 1)]*2, "log") logger = Logger.new("log", "daily") logger.info "test" logger.close p Dir.glob("log*") ~~~ Ruby2.2 or newer ~~~ ["log"] ~~~ Ruby2.1 or older ~~~ ["log.20161115", "log"] ~~~ (Today is 2016-11-16) #### 補足 workerのような、必要に応じて都度起動するrubyスクリプト内で、Loggerをshift_age "monthly" で使用しています。 Rubyのバージョンを2.2系にあげたタイミングでログがローテーションされなくなってしまいました。 Loggerを起動した時刻が、ローテートタイミングを決める基準になっているのが原因です。 頻繁に起動してはすぐに死ぬプロセスだと、プロセスが生きている間にたまたまタイミングがこない限りローテーションされません。 ---Files-------------------------------- past_log_rotate.patch (8.56 KB) -- https://bugs.ruby-lang.org/