2011-05-13 10 views
30

Estoy creando una aplicación con Heroku y tengo algunos problemas. que desea depurar algún contenido como lo hago con los carriles de servidor:Depuración de Heroku

logger.debug '...'

¿Cómo puedo hacer que en Heroku, para que pueda ver la depuración en heroku registros? (o cualquier otra cosa ..)

¡Gracias!

+0

mismo aquí, compañero de gran pregunta ... – gal

+0

El mismo problema en la pila de cedro. Parece que logger.debug en los modelos tiene una salida excelente. pero logger.debug en los controladores no están en salida. ¿Alguien con información más actualizada? – GeorgeW

Respuesta

20

detalles aquí: http://devcenter.heroku.com/articles/logging

También asegúrese de que se establece el nivel de registro adecuado para su aplicación Rails: http://blog.sethladd.com/2005/11/adjust-log-level-in-ruby-on-rails.html

+1

Una nota extra que me atrapó. Si está utilizando Rails 3.2 y no tiene la gema rails_12factor instalada, Heroku inyecta un complemento rails_log_stdout. Este complemento anulará su registrador y, por lo tanto, registrará el nivel. Establece el nivel de registro igual al ENV var LOG_LEVEL y el valor predeterminado es INFO. Por lo tanto, necesitaría ejecutar 'heroku config: establecer LOG_LEVEL = DEBUG' para que esto funcione –

+0

También tuve que desactivar el almacenamiento en búfer '$ stdout.sync = true' – Tony

8

heroku logs en su línea de comandos le dará los registros de la aplicación actual. Si tiene expanded logging encendido que pueda cola de esta salida

+1

FYI: el seguimiento muestra la salida en tiempo real y se realiza mediante registros heroku --tail –

12

La pila de Cedro en Heroku no lo hace parece responder a la variable de configuración LOG_LEVEL (env) que funciona para pilas previas (utilizo el logging: addon expandido). Intenté configurar LOG_LEVEL en debug y DEBUG sin éxito.

Solo configurando config.log_level = :debug en config/environments/production.rb soy capaz de ver la salida de 'logger.debug'.

1

escribir en sus registros en Heroku, en lugar de utilizar simplemente utilizar logger.debug "..."puts:

puts "..." 

Usted no siquiera es necesario para establecer el ajuste config.log_level en config/environments/production.rb.

See the docs here.

+0

SÍ SÍ SÍ, esto funcionó. Solo hacer 'puts' no requiere relleno. ¡Gracias! – Evolve

+2

sí. Y luego simplemente elimine las puts cuando quiera entrar en producción. No tengo IDEA por qué cada idioma que se utiliza para el desarrollo web tiene algún tipo de clase de registrador con niveles que puede establecer. ¡Parece completamente inútil! –

+2

Michael, me temo que su sarcasmo podría perderse en Evolve y user664833: obviamente, la razón por la que existen clases de registrador es que no necesita eliminar (o volver a agregar) declaraciones de puts cuando se pasa de un desarrollo a producción o cuando intenta para depurar un error, etc., simplemente cambie el log_level. –

12

estado luchando con esto durante mucho tiempo, la solución es agradable y simple:

situado en production.rb en lugar de

config.log_level = :debug 

lugar:

config.logger = Logger.new(STDOUT) 
config.logger.level = Logger::DEBUG 

y obtiene el resultado de registro completo.

6

El uso de rieles 3.2, hicimos este configurable modificando config/ambientes/{entorno} .rb para conducirlo a una variable de entorno:

config.log_level = ENV["LOG_LEVEL"].to_sym if ENV["LOG_LEVEL"] 

Entonces, podemos modificar la variable de configuración a Heroku cámbialo:

heroku config:set LOG_LEVEL=debug --app <app name> 

Esto nos permite registrar fácilmente más o menos según sea necesario.

5

Esto funcionó para mí:

heroku config:set LOG_LEVEL=debug 
+1

Esto funciona. Configurar config.log_level o config.logger.level para depurar no tuvo ningún efecto. La inspección en la consola reveló que Rails.logger.level era siempre la información predeterminada. Sin embargo, configurar la variable de configuración hizo el truco. – Timo

+0

@TimoLehto para el perezoso 'Rails.logger.level = 0' para: nivel de depuración – Hengjie

0
config.log_level = ENV['APP_LOG_LEVEL'] ? ENV['APP_LOG_LEVEL'].to_sym : :error 
+2

Agregue más que solo código –

+0

Es mejor que explique su explicación que simplemente publicar alguna sección de código anónimo. Debes leer [Cómo escribo una buena respuesta] (https://stackoverflow.com/help/how-to-answer) –