如何更改Rails 3.0的默认日志路径?

时间:2010-10-15 14:59:38

标签: ruby-on-rails logging ruby-on-rails-3

由于我公司的内部软件部署过程,我必须更改我的铁路应用程序的默认日志路径:基本上我的rails应用程序最终位于只读位置,我需要在“为此制作”目录中编写的日志文件

使用Rails 2.x我们曾经在FCGI脚本中添加一些黑魔法,以便在prod上部署时强制使用。主机:

class Rails::Configuration
   def default_log_path
     File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log")
   end
 end

但是,在Rails 2.3(它是一个模块)中,Configuration不再是一个类了,在我看来,不再有任何default_log_path了...

3 个答案:

答案 0 :(得分:8)

您只需要定义记录器

config.logger = ActiveSupport::BufferedLogger.new(File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log"))

这个技巧也适用于Rails 2。您可以根据环境定义您真正想要的日志文件。

答案 1 :(得分:7)

答案 2 :(得分:4)

从Rails 3.2.3开始,看起来日志路径名也在Rails::Rack::LogTailer#initialize中定义,并且来自Rails :: Server#log_path。

LOG_PATH = "log/mylog.log"

require 'rails/commands/server'
module Rails
  class Server
    def log_path
      LOG_PATH
    end
  end
end

class Application < Rails::Application
  ...
  config.paths['log'] = LOG_PATH
  ...
end