Ruby Logger表现得很奇怪并且记录信息以进行差异化

时间:2013-02-22 12:13:02

标签: ruby logging

我在我的项目中使用ruby logger,我有conf.rb,类似于:

require 'rubygems'

# initiate the logger file 
$LOG = Logger.new("#{$ROOT_PATH}/log/errors.log", 'daily')  
$LOG.datetime_format = "%Y-%m-%d %H:%M:%S"

更像是一名工人,我正在使用像worker1.rb这样的东西:

require "#{$ROOT_PATH}/conf.rb"
$LOG.error "test"  

现在,例如,至于今天我应该在 error.log 文件中获得所有结果,但我得到的结果是log / errors.log.20130221,log / errors.log.20130221.1和log / errors.log.20130221.2。一直在运行的工人没有重新启动它。

我在Ubuntu下使用ruby ruby​​ 1.9.3p0。

1 个答案:

答案 0 :(得分:0)

Logger#datetime_format引用日志文件(日志格式化程序)中的日期而不是文件名格式轮换。

旋转文件的文件名被硬编码到lib - https://github.com/ruby/ruby/blob/trunk/lib/logger.rb#L645

您可以重新定义方法,也可以使用rotatelogs

Logger.new(IO.popen("/usr/sbin/rotatelogs -l file_pattern period", 'a'))

显示.1,.2扩展名,因为Logger默认设置为shift_size。一旦日志文件达到该值,日志就会被轮换,但由于它是相同的日期,因此记录器正在添加numbers以防止发生冲突