2012-04-28 25 views
6

Recientemente comencé a usar el oink gem en mi aplicación heroku porque noté una pequeña pérdida de memoria con algunas acciones del controlador. El comando oink logs funciona bien localmente pero no puedo entender el comando para que funcione en mi sitio de producción.oink logs comando no funciona en heroku

Aquí está el comando que estoy tratando:

heroku run oink /log/* 

Y aquí está la línea de mi archivo production.rb:

config.middleware.use(Oink::Middleware, :logger => Rails.logger) 

En mi instalación local, oink es el almacenamiento de los registros en el archivo /log/oink.log.

Respuesta

-1

Trate

heroku run bundle exec oink log/* 
+0

una corrección técnica: 'registro de ejecución paquete exec oink heroku/\ *', de lo contrario el splat se interpreta de forma local, lo que hace que los caminos a su registro local archivos que se pasarán a heroku Dicho esto, este comando todavía no parece funcionar ya que Heroku no almacena los archivos de registro en el disco. –

-1

Para analizar sus registros de producción que necesita para funcionar

heroku run bundle exec oink log/production.log 
1

Aquí es una respuesta de apoyo Heroku:

"En la mayoría de los casos utilizando Oink es localmente lo suficientemente bueno como para entender los problemas de uso de la memoria. El sistema de archivos de Heroku es efímero y cada dinamómetro tiene su propio sistema de archivos aislado, por lo que no es muy práctico escribir y buscar archivos. gure Oink para escribir en stdout o en su registrador de rieles sus mensajes deberían aparecer en sus registros de Heroku y podría usar un log drain o un complemento de archivo de registro como Papertrail para obtener una copia local de ellos. "

Parece que están sugiriendo usarlo en desarrollo. O si puede escribir en stdout y luego registrar drenarlos usted mismo en el formato correcto.

No pude averiguarlo con poca antelación, así que terminé usando la gema heroku-api para reiniciar automáticamente los servidores de aplicaciones cada pocas horas desde el trabajo de cron. Esto funcionó como una solución temporal.

2

Aquí está la respuesta: https://stackoverflow.com/a/14145299/1684322

Es importante utilizar Hodel3000CompliantLogger en lugar de lo contrario Rails.logger oink fallará archivos de registro de análisis sintáctico. También puede ser configurado para no en config/ambientes/production.rb pero por ejemplo en config/inicializadores/oink.rb

YourApplication::Application.middleware.use(Oink::Middleware, :logger => Hodel3000CompliantLogger.new(STDOUT), :instruments => :memory) 

Esto hará que Oink escribir por defecto de archivos que pueden ser posteriormente capturado por

log
heroku logs -n500 --app app_name > logfile_for_oink 

O use otra herramienta de administración de registros como PaperTrail, o configure syslog drain (rsyslog en otra * caja nix).

Uso oink con --threshold = 0 para mostrar todas las entradas

Cuestiones relacionadas