2012-03-09 20 views
9

Escribí una aplicación demo HelloWorld Rails y la probé con WEBrick (ni siquiera usa un DB, es solo un controlador que imprime "hello world"). Luego traté de implementarlo en un Apache local alimentado con Passenger. De hecho, esta prueba es solo para que el Pasajero funcione (es mi primer despliegue en Apache). Ahora ni siquiera estoy seguro de que Passenger funcione, pero no recibo ningún error en el lado de Apache.No hay mensajes de registro en production.log

Cuando disparo http://rails.test/ el navegador muestra la página de error de Rails 500, así que supongo que el pasajero funciona. Quiero investigar los registros, pero sucede que production.log está vacío! No creo que sea un problema de permiso, porque si elimino el archivo, se vuelve a crear cuando recargo la página. He intentado cambiar el nivel de registro en conf/environments/production.rb, traté de escribir manualmente el archivo de registro con rieles de producción de la consola y

Rails.logger.error('asdf') 

vuelve true pero nada se escribe a production.log. La ruta (obtenida por Rails.logger.inspect) es correcta, y observo que el archivo se vuelve a crear si lo elimino manualmente. ¿Cómo puedo saber qué está pasando?

(ya comprobado los registros de Apache, además de que el nivel de depuración más alta para los pasajeros, pero parece un problema rieles, por lo que no se registra por el servidor)

+0

Todavía tengo este problema, aunque estoy en raíles 4 ... ¿qué terminaste haciendo? – Braden

+0

Rails actualizados. Podría ser una regresión – Raffaele

Respuesta

13

Suponiendo que estés Rails 3.2 en funcionamiento. 1, este es un error. Fue patched in 3.2.2.

Si no puede actualizar a 3.2.2 por cualquier razón, this comment on GitHub has a workaround:

# config/initializers/patch_rails_production_logging.rb 
Rails.logger.instance_variable_get(:@logger).instance_variable_get(:@log_dest).sync = true if Rails.logger 
+0

Lo extraño es que jugué con 'Logger.flush' en la consola de Rails, pero no tuvo ningún efecto. La actualización resolvió mi problema – Raffaele

+0

Me alegro de que haya ayudado. Actualicé la respuesta con una solución para cualquiera que no pueda actualizar. – Brandan

+0

'método indefinido 'sync =' para nil: NilClass (NoMethodError)' con rails 4.1.2 – RAJ

3

Configuración esto funciona sobre raíles 3.2.11:

Rails.logger = ActiveSupport :: BufferedLogger.new (Rails.root.join ("log", "production.log"))

+2

hola - ¿dónde agrego esta línea? – undefined

+0

Pongo esto en un inicializador bajo config. por ejemplo, en 'config/initializers/logger.rb':' if! Rails.env.development? Rails.logger = ActiveSupport :: BufferedLogger.new (Rails.root.join ("log", "# {Rails.env} .log")) final' En serio, ¿cómo obtengo una nueva línea sin cortar-pegar en una nueva línea? Si presiono la tecla enter, se guarda mi edición. –

Cuestiones relacionadas