2010-10-15 17 views
9

Tengo que cambiar la ruta de registro predeterminada de mi aplicación ferroviaria debido al proceso de implementación de software interno de mi compañía: básicamente mi aplicación de rieles termina en una ubicación de solo lectura y necesito los archivos de registro escritos en un directorio "hecho para esto".¿Cómo cambiar la ruta de registro predeterminada de Rails 3.0?

Con Rails 2.x solíamos agregar un poco de magia negra en nuestro script FCGI para forzar eso cuando se implementa en prod. anfitriones:

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

Sin embargo, configuración no es una clase más en Rails 2.3 (que es un módulo), y me parece que no hay ninguna default_log_path involucrados más allí, así ...

Respuesta

7

Solo necesita definir su registrador

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

Este truco también funciona con Rails 2. Y puede definir por entorno donde realmente desea su archivo de registro.

+2

Actualmente Rails3 (al menos) tiene un config.log_path que utilicé y funcionó a la perfección. Pero no habría encontrado sin su (realmente muy sensible) solución :) – Romain

+0

como desee. También puede cambiar su registrador con la configuración config.logger. Usa Syslogger por ejemplo. Pon tu encontrado en la respuesta. Es mas mejor – shingara

+0

En realidad, ¿existe una fuente de información canónica sobre estas propiedades de configuración? Hasta ahora no he encontrado uno completo ... – Romain

6

El ajuste config.log_path ha quedado obsoleto - la solución recomendada es ahora:

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

+1

Esta sintaxis no parece correcta. En el bloque de configuración, si haces 'config.paths ['logfile'] = '...'' parece correcto, pero LogTailer aún se queja. – aceofspades

+2

Para mí, 'config.paths ['log']' como sugerido por @aceofspades (a continuación, no 'archivo de registro') funcionó bien. – iGEL

4

A partir de los carriles 3.2.3, parece que el nombre de ruta de registro también se define en Rails::Rack::LogTailer#initialize, y que proviene de rieles: : 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 
Cuestiones relacionadas