我在我的项目中使用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。
答案 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以防止发生冲突