2011-06-03 77 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