我的rails应用程序bin/log_data
中有一个可执行文件。在此文件中,为了能够访问Rails.logger
,我必须要求以下文件:
APP_PATH = File.expand_path('../config/application', __dir__)
require 'rails/commands'
这会在这个运行bin/log_data
的进程中加载整个rails环境,我认为这种方法有点笨拙。任何人都可以与我分享我将如何加载Rails.logger
以便我可以执行`Rails.logger.info('记录相对重要的事情')?
另外,只是一些背景信息,我想要用户Rails.logger
,因为输出转到log/development.log
,这对于我想要记录在我的heroku日志中的内容非常重要
答案 0 :(得分:0)
您只需创建一个ActiveSupport::Logger
实例:
require 'active_support/logger'
APP_PATH = File.expand_path('../config/application', __dir__)
rails_env = ENV["RAILS_ENV"] || "development"
logger = ActiveSupport::Logger.new(APP_PATH + "/logs/#{rails_env}.log")
如果您真的想将其称为Rails.logger
,请创建一个模块:
require 'active_support/logger'
require 'active_support/string_inquirer'
APP_PATH = File.expand_path('../config/application', __dir__)
logger = ActiveSupport::Logger.new(APP_PATH + "/logs/#{rails_env}.log")
module Rails
class << self
attr_reader :logger
attr_reader :env
end
self.env = ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || "development")
self.logger = ActiveSupport::Logger.new(APP_PATH.join("logs", "#{self.env}.log"))
end
请注意,当涉及到日志级别和格式化时,它与Rails记录器的设置不完全相同,只有通过启动rails应用程序才能获得。