Как изменить путь к журналу Rails 3.0 по умолчанию? - PullRequest
9 голосов
/ 15 октября 2010

Мне нужно изменить путь к журналу приложения по умолчанию для моего железнодорожного приложения из-за внутреннего процесса развертывания программного обеспечения моей компании: в основном мое приложение rails оказывается в месте, доступном только для чтения, и мне нужны файлы журналов, записанные в каталоге, «предназначенном для этого»..

В Rails 2.x мы добавляли некоторую чёрную магию в наш скрипт FCGI для принудительного применения при развертывании на prod.hosts:

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 ]

8 голосов
/ 06 января 2011

Параметр config.log_path устарел. Рекомендуемое решение:

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

8 голосов
/ 15 октября 2010

Вам просто нужно определить свой логгер

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

Этот прием также работает с Rails 2.И вы можете определить по среде, где вы действительно хотите, чтобы ваш файл журнала.

5 голосов
/ 18 мая 2012

По состоянию на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...