2010-06-05 65 views

回答

37

有兩種方法去做:

  • 假定你的庫是自包含的,有一個模塊,可以在logger屬性添加到您的模塊,並使用無處不在你的庫代碼。

    然後,您既可以使用在config/initializers/的初始化,或config/environment.rbconfig.after_initialize塊初始化記錄器,像這樣:

    require 'mylibrary' 
    MyLibrary.logger = Rails.logger 
    

    這仍然將允許您使用功能完備的庫從外面的腳本軌。有時候,這很好。

  • 如果在沒有Rails的情況下使用您的庫確實沒有任何意義,那麼您也可以直接使用Rails.logger

在這兩種情況下,您都在處理標準的Ruby Logger。另外請記住,理論上,記錄器可能是nil

+0

謝謝,這正是我一直在尋找的。 – drt 2010-06-05 19:52:30

+3

注:此答案包含不正確的信息,編輯不希望我解決它們。除非(也許)你使用2.0以上的Rails,否則你不會「處理標準的Ruby Logger」。 Rails現在使用[ActiveSupport :: BufferedLogger](http://apidock.com/rails/ActiveSupport/BufferedLogger)。如果您決定實例化一個單獨的記錄器(例如)包含在Rails項目中的cron作業,以避免「污染」標準的Rails日誌。在這種情況下,請確保使用'ActiveSupport :: BufferedLogger.new'而不是'Logger.new'。我試過了,但沒有奏效。 – Lambart 2013-11-14 01:38:46

16

我們可以直接在Rails中使用Rails logger,參見下面的代碼片段。

require 'logger' 

Rails.logger.info "Hay..!!! Im in lib" 
Rails.logger.debug "Debugging this object from Lib #{object.inspect}" 
Rails.logger.error "This is an error..." 
+3

最後,我意識到我需要,這對我有用。很明顯,一旦你知道了,但一段時間對我來說並不明顯。 – 2014-07-22 18:30:13