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