2011-06-03 74 views
8

我想为我的应用程序,这当然日志到不同的文件中,有人问一个问题定制记录:Setting up the logger in rails 3Rails 3中的自定义记录器?

但我希望有一个记录器,我可以用我自己的类名像拨打:

StatusLogger.info "something happend!!!" 

我该怎么做?

+0

为什么要做到这一点,它的要好得多有一个日志文件,并解析它找到事件。 – 2011-06-03 22:55:14

+0

我不知道,我想这是一个很好的观点,但就像我有这些通过cron运行的rake任务,就像我想在发生这种事情时记录一样,所以我可以回去看看它们发生的时间以及运行的任务的状态。什么是解决这个问题的好方法? – 2011-06-03 23:59:56

+0

不会cron通过电子邮件将cronjob的输出发送到根目录?无论如何,这似乎是处理手头状况的好方法。当你习惯于处理web应用程序时,Cronjobs很难诊断和管理。也许问serverfault? – 2011-06-04 00:46:38

回答

14

你可以做到这一点与此代码

logfile = File.open('/path/to/log.log', 'a') 
StatusLogger = Logger.new(logfile) 
StatusLogger.info 'Hello World!' 

你最有可能在初始化文件中配置,或者是你能做到这一点的环境中的文件,如果你想要的。

+0

嘿德文,谢谢,当我尝试这个似乎工作,但没有在日志文件中,想法? – 2011-06-03 23:32:51

+0

嗯....尝试添加logfile.sync = true,以便文件被刷新。 – 2011-06-03 23:47:33

+0

感谢您的分享。 – 2013-01-25 20:10:52

13

你的意思是,就像在application.rb中:

StatusLogger = ActiveSupport::BufferedLogger.new(Rails.root.join('log/status.log')) 
+0

这个代码blob在一个名为config/initializer/log.rb的初始化程序中,例如 – pjammer 2013-03-05 15:41:27

+0

注意:只要记得将它分配给一个变量,就可以将它放在应用程序的任何位置,而不仅仅是在application.rb中(而不是像这里所示的常量) – 2013-04-18 03:11:23