[ruby-dev:49882] [Ruby trunk Bug#12948] Logger does not rotate even if there is a past file to rotate.

From: tsukasa.oishi@...
Date: 2016-11-16 06:03:29 UTC
List: ruby-dev #49882
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/

In This Thread

Prev Next