Project

General

Profile

Actions

Bug #12948

closed

Logger does not rotate even if there is a past file to rotate.

Added by tsukasa.oishi (Tsukasa Oishi) over 7 years ago. Updated over 7 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]
[ruby-dev:49881]

Description

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.

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) past_log_rotate.patch tsukasa.oishi (Tsukasa Oishi), 11/16/2016 05:52 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0