2011-02-08 95 views
3

什么是Rails3的“最佳实践”自定义日志记录选项?任何人都可以提出好的宝石或技术,用于伐木。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版本的这些小差异的任何东西。

感谢

回答

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个日志。

+0

Rails使用BufferedLogger。我阅读了关于ruby-core邮件列表的一些讨论,看起来很随意。他们描述的唯一好处是在多个进程中同时进行非交错编写,但1.9.2版的Stdlib Logger类在其中有一个Mutex,看起来完成了同样的事情。除了Logger很容易改变,并且具有自动日志滚动功能。如果它成为主要问题,我只会登录到Mongo。 – Duke 2011-06-11 20:41:19