簡體   English   中英

Ruby Monkey Patched Logger在Rails控制台中不起作用

[英]Ruby Monkey Patched Logger does not work in Rails Console

我有我的ActiveSupport :: BufferedLogger一些輔助方法,如顯示的鍵值對,這一切工作正常,從軌秒 ,但在軌C未能

在rails中,我可以看到我的Logger擴展了BufferedLogger,這是我選擇用於MonkeyPatch的類,我也使用ActiveSupport :: Logger對此進行了測試。

我以為Rails c會通過與Rails所使用的初始化程序相同的方式運行,我是否認為這是錯誤的?

啟動rails c時是否需要運行某種初始化程序?

我的文件位置是:

  • config / initializers / active_support_logger.rb

錯誤在這里:

在此處輸入圖片說明

此處列出了示例代碼段

class ActiveSupport::BufferedLogger

    def kv(key, value)
        info('%-50s %s' % ["#{key}: ".brown, value])
    end

    def line
        info(@@l.brown)
    end

    def block(message)
        line
        info(message)
        line
    end

end

我建議將ActiveSupport::Logger (或者如果確實希望,盡管在Rails 4中不推薦使用ActiveSupport::BufferedLogger子類ActiveSupport::Logger而不是猴子補丁。 Rails提供了一個配置選項來覆蓋應用程序使用的記錄器實例。 這可以在加載Rails環境的任何上下文中使用,包括服務器和控制台。

您可以通過多種方法來執行此操作。 一種快速而骯臟的入門方法是只定義類並在初始化器中設置記錄器實例,該初始化器將在Rails環境的初始化過程中加載:

# config/initializers/my_logger.rb

class MyLogger < ::ActiveSupport::Logger 
  # additional methods and overrides
end

Rails.logger = MyLogger.new(Rails.root.join("log", "#{Rails.env}.log"))

有關更多信息,請查看有關調試應用程序的Rails指南: http : //guides.rubyonrails.org/debugging_rails_applications.html#the-logger

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM