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

由于我公司的内部软件部署过程,我必须更改我的铁路应用程序的默认日志路径:基本上我的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了…

您只需要定义记录器

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

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

不推荐使用config.log_path设置 – 现在推荐的解决方案是:

config.paths.log = "/some/path/#{Rails.env}.log"

从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