Rails3自定义日志选项?

时间:2011-02-08 19:28:53

标签: ruby-on-rails-3

Rails3的“最佳实践”自定义日志记录选项有哪些?任何人都可以提出好的宝石或技术来记录。

一般来说,自定义,非控制器,非模型的东西是什么?如果我制作这样的自定义记录器:

#custom_logger.rb
class CustomLogger < Logger
  def format_message(severity, timestamp, progname, msg)
    "#{msg}\n"
  end
end

logfile = File.open(RAILS_ROOT + '/log/custom.log', 'a')  #create log file
logfile.sync = true  #automatically flushes data to file
CUSTOM_LOGGER = CustomLogger.new(logfile)  #constant accessible anywhere

(从here被盗)应该放在“/ lib”的文件中吗?在“application.rb”中?或者在初始化程序中?

我似乎无法找到任何描述与以前的Rails版本之间的这些微小差异的东西。

由于

3 个答案:

答案 0 :(得分:2)

这个gem非常适合自定义日志输出: https://github.com/johmas/itslog

答案 1 :(得分:2)

我把我放在application.rb中,因为它只有几行。我很懒。如果你把你的类放在lib /的文件中,你必须手动要求它或设置lib / autoloading。

这是我的记录器代码:

application.rb中:

class DreamLogFormatter < Logger::Formatter
  def call(severity, time, progname, msg)
    "[%s(%d)%5s] %s\n" % [time.to_s(:short), $$, severity, msg2str(msg)]
  end
end

...

config.logger = Logger.new(Rails.root.join('log', "#{Rails.env}.log"), 10, 30*1024*1024)
config.logger.formatter = DreamLogFormatter.new

注意我每30MB滚动一次日志并保留最后10个日志。

答案 2 :(得分:1)

'lib'似乎仍然适合放置这些东西。

请参阅:

Where should libraries go in Rails 3?