2011-06-28 18 views
6

He agregado el proyecto Resque to my Rails 3. He creado un trabajo que lee/escribe algunas cosas desde/hasta la base de datos.Problemas de registro con Resque

El problema es que no veo los registros de consulta SQL como "Publicar carga (0.5ms) SELECCIONE" publicaciones ". * DE" mensajes "" en el terminal. Tampoco veo ningún mensaje de Rails.logger que haya configurado.

Cuando realizo otra solicitud (actualización simple), los mensajes del registrador y los registros de consulta SQL aparecen de repente.

¿Alguna idea de lo que podría estar pasando? Gracias

Respuesta

4

Los rieles no se escribirán en el archivo de registro de inmediato, sino que espera una cierta cantidad de líneas antes de vaciar el archivo. Se puede decir que los carriles para limpiar siempre el registro añadiendo esto a su archivo o development.rbapplication.rb ...

config.logger.auto_flushing = true 

Sólo vuelvas a hacer esto en el desarrollo, y nunca establecer esto en la producción, ya que sólo matará a su E/S .

También puede hacerlo a la carta con ...

Rails.logger.flush 

documentación de la API aquí ...

http://api.rubyonrails.org/classes/ActiveSupport/BufferedLogger.html#method-i-auto_flushing-3D

+1

ActiveSupport :: BufferedLogger # auto_flushing está en desuso en Rails 3.2 ahora. Las instrucciones son establecer el nivel de sincronización en el manejador de archivo subyacente o ajustar su sistema de archivos. La caché de FS ahora es lo que controla el enjuague. file = File.open ('foo.log', 'w') file.sync = true El archivo ActiveSupport :: BufferedLogger.new – plainjimbo

+0

está muy jodido, puede ver esto mejor en los documentos bajo el Sección "Deprecations" - https://github.com/lifo/docrails/blob/master/railties/guides/source/3_2_release_notes.textile – plainjimbo

+0

@Jimbo - El problema con ese mensaje de desaprobación es que no tengo idea de qué es lo que "establece nivel de sincronización en el identificador de archivo subyacente ". –

0

Resque no va a vaciar el registro en el modo de producción (a menos que su el trabajo genera más de 1000 líneas de registro).

Deberá enjuagar para cada línea de registro generado. Me gustaría configurar solamente resque con el archivo lib/tareas/resque.rake:

task "resque:setup" => :environment do 
    Resque.before_first_fork = Proc.new { Rails.logger.auto_flushing = 1 } 
end 
2

experimentamos la misma cuestión en uno de nuestros proyectos. Además, también queríamos registrar todos los mensajes de Resque en un archivo de registro separado.

En la entrada del blog Enable immediate log messages of resque workers se puede encontrar un ejemplo de código para habilitar el registro inmediato en un archivo separado.

Cuestiones relacionadas