heroku - como ver todos los registros

468

Tengo una pequeña aplicación en heroku. Cada vez que quiero ver los registros voy a la línea de comando y hago

heroku logs

Eso solo me muestra unas 100 líneas. ¿No hay una manera de ver registros completos para nuestra aplicación en heroku?

josh
fuente

Respuestas:

785

Actualización (gracias a dawmail333):

heroku logs -n 1500

o, para seguir los registros en vivo

heroku logs -t 

Documentación de registro de Heroku

Si necesita más de unos pocos miles de líneas, puede usar los drenajes Syslog de heroku

Alternativamente (método antiguo):

$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
glebm
fuente
55
Esto ahora no funciona en la pila de cedro. ¿Alguien ha encontrado una nueva alternativa?
nathanvda 01 de
2
Solo use heroku logs -n 1500, es el mejor método disponible en Cedar. Si necesita más líneas que eso, necesita un drenaje de syslog: devcenter.heroku.com/articles/logging#syslog_drains
Liam Dawson
Este es un consejo útil también para los problemas de la tubería de activos: heroku logs -n 2000 | grep 'precompilado'
Dave Collins
En realidad es heroku run rails c. ¡Actualizado!
glebm
3
Para el método anterior, ¿por qué ejecutarías una consola de rails en lugar de solo heroku run cat log/production.log?
Chloe
139

¡El registro ha mejorado mucho en heroku!

$ heroku logs -n 500

¡Mejor!

$ heroku logs --tail

referencias: http://devcenter.heroku.com/articles/logging

ACTUALIZADO

Estos ya no son complementos, sino parte de la funcionalidad predeterminada :)

revs nessur
fuente
44
Además, -n puede ir hasta 1500, supongo que Heroku simplemente corta cualquier cosa después de eso.
Liam Dawson
52

Heroku trata los registros como flujos de eventos ordenados por tiempo. *.logNo se recomienda acceder a los archivos en el sistema de archivos en dicho entorno por una variedad de razones.

Primero, si su aplicación tiene más de un banco de datos, cada archivo de registro solo representa una vista parcial de los eventos de su aplicación. Tendría que agregar manualmente todos los archivos para obtener la vista completa.

En segundo lugar, el sistema de archivos en Heroku es efímero, lo que significa que cada vez que se reinicia o mueve su dinamómetro (lo que ocurre aproximadamente una vez al día ) se pierden los archivos de registro. Por lo tanto, solo tiene a lo sumo un día de vista en los registros de ese único dinamómetro.

Finalmente, en la pila Cedar en ejecución heroku consoleo incluso heroku run bashno te conecta a un banco de pruebas actualmente en ejecución. Genera uno nuevo específicamente para el bashcomando. Esto se llama un proceso único . Como tal, no encontrará los archivos de registro para sus otros dynos que ejecutan los procesos http reales en los que se generó heroku run.

El registro y la visibilidad en general es un ciudadano de primera clase en Heroku y hay varias herramientas que abordan estos problemas. Primero, para ver una secuencia de eventos de aplicaciones en tiempo real en todos los dynos y todas las capas de la aplicación / pila, use el heroku logs -tcomando para ajustar la salida a su terminal.

$ heroku logs -t
2010-09-16T15:13:46-07:00 app[web.1]: Processing PostController#list (for 208.39.138.12 at 2010-09-16 15:13:46) [GET]
2010-09-16T15:13:46-07:00 app[web.1]: Rendering template within layouts/application
2010-09-16T15:13:46-07:00 heroku[router]: GET myapp.heroku.com/posts queue=0 wait=0ms service=1ms bytes=975
2010-09-16T15:13:47-07:00 app[worker.1]: 2 jobs processed at 16.6761 j/s, 0 failed ...

Esto funciona muy bien para observar el comportamiento de su aplicación en este momento. Si desea almacenar los registros durante períodos de tiempo más largos, puede usar uno de los muchos complementos de registro que proporcionan retención de registros, alertas y disparadores.

Por último, si desea almacenar los archivos de registro usted mismo, puede configurar su propio drenaje de syslog para recibir la secuencia de eventos de Heroku y procesarlo / analizarlo usted mismo.

Resumen: no use heroku consoleo heroku run bashpara ver archivos de registro estáticos. Canalice en la secuencia de eventos de registro de Heroku para su aplicación usando heroku logso un complemento de registro.

Ryan Daigle
fuente
23

Ver también flujos / filtros individuales.

Por ejemplo, siga solo los registros de su aplicación

heroku logs --source app -t

O vea solo los registros del enrutador

heroku logs --ps router

O encadenarlos juntos

heroku logs --source app --ps worker

Tan bueno..

Shawn Vader
fuente
55
Para ver solo los registros de mi aplicación, hago: heroku logs --ps web.1(con 1 dinamómetro)
Maxence
22

Bueno, las respuestas anteriores son muy útiles, te ayudarán a ver desde la línea de comandos. Mientras que si desea hacerlo desde su GUI, debe iniciar sesión en su cuenta de heroku y luego seleccionar su aplicación y finalmente hacer clic en ver registros

vista de imagen

Aniket Shivam Tiwari
fuente
1
Este método solo le muestra la salida del registro a medida que ocurren, comenzando desde el momento en que hace clic en la opción "Ver registros". Por lo tanto, no es útil a menos que solo desee esencialmente seguir los registros sin entrar en la consola.
Jeremy Gunter
2
¿No hay ninguna opción para ver todos los registros de esta interfaz de usuario?
Sunil Garg
16

Siga en el registro de Heroku

Para ver sus registros tenemos:

  1. El comando logs recupera 100 líneas de registro de forma predeterminada.

heroku logs

  1. muestra un máximo de 1500 líneas, --num(u -n) opción.

heroku logs -n 200

  1. Mostrar registros en tiempo real

heroku logs --tail

  1. Si tienes muchas aplicaciones en heroku

heroku logs --app your_app_name

Minh Nguyen
fuente
9

heroku logs -t nos muestra los registros en vivo.

ndrx42
fuente
Pero se detendrá después de un tiempo.
Neeraj Sewani
8

Puede acceder a sus archivos de registro utilizando la interfaz de línea de comandos de Heroku ( uso de CLI ).

Si la CLI de Heroku está instalada y conoce el nombre de su aplicación (como https://myapp.herokuapp.com/), puede ejecutar el siguiente comando:

heroku logs --tail --app=myapp

También puede acceder a los registros en una secuencia en tiempo real usando:

heroku logs --source app --tail --app=myapp

Si los registros te dicen algo como esto:

npm ERR! Puede encontrar un registro completo de esta ejecución en:

npm ERR! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log

Luego también puede acceder a ellos utilizando el terminal bash a través de Heroku CLI:

heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
Benny Neugebauer
fuente
Obtengo/usr/bin/less: cannot execute binary files
Michael Fulton
7

Podría valer la pena agregar algo como el plan Papertrail gratuito a su aplicación. Configuración cero, y obtiene 7 días de datos de registro de hasta 10 MB / día, y puede buscar a través de 2 días de registros.

ayunarse
fuente
4

para archivos WAR:

No utilicé github, en su lugar cargué directamente un archivo WAR (que me pareció mucho más fácil y rápido).

Entonces lo siguiente me ayudó:

heroku logs --app appname

Espero que ayude a alguien.

Ula
fuente
4

Necesita usar -tu --tailopción y debe definir el nombre de su aplicación heroku.

heroku logs -t --app app_name
Peter Kota
fuente
4

Mi solución es obtener un registro completo la primera vez que se inicia la aplicación, como:

heroku logs -n 1500 > log

luego agregue fgrep -vfpara mantenerlo actualizado, como:

heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log

para el registro continuo, simplemente repítelo usando watch por cada x minutos (o segundos).

kpsk kpsk
fuente
2

Para ver el registro detallado, debe colocar dos líneas en el production.rbarchivo:

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

y luego corriendo

heroku logs -t

Puedes ver los registros detallados.

sumitir
fuente
2

Prefiero hacerlo de esta manera

heroku logs --tail | tee -a herokuLogs

Puede dejar el script ejecutándose en segundo plano y simplemente puede filtrar los registros del archivo de texto de la forma que desee en cualquier momento.

Ashish Pahwa
fuente
gracias, me llevó un tiempo desplazarme pero finalmente encontré la solución para mí.
Meinkraft
2

Debe tener algunos registros de drenaje implementados y debe estar drenando sus registros allí, para ver todos los registros (también administrar registros históricos):

  1. Primera opción : se puede usar Splunk: puede drenar todos sus registros como:
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name

Y luego inicie sesión en su servidor splunk y busque cualquier número de registros. Estoy usando Splunk y esto funciona perfectamente bien para mí.

  1. Segunda opción : puede comprar un complemento para su aplicación, como se indica a continuación: (No he usado estas opciones, sin embargo, estas son las disponibles).

    • Timber.io
    • Lógica de sumo
    • LogEnteries
    • Registro de ADN
    • Rastro de papel

También puede echar un vistazo a las siguientes opciones: si desea tener sus registros en formato JSON, ya que ayudará si está presionando sus registros a un sistema externo como Splunk / ELK, sería fácil (también en cuanto al rendimiento) buscar en JSON

https://github.com/goodeggs/heroku-log-normalizer

No tiene Readme.md, pero se da alguna explicación en https://github.com/goodeggs/bites/issues/20

Finalmente

Y siempre puede usar el siguiente comando como ya lo mencionaron otros usuarios:

El siguiente comando seguirá los registros de generación en heroku

heroku logs -t -a <app_name>

El siguiente comando mostrará el número 1000 de líneas de registros de heroku

heroku logs -n 1000 -a <app_name>

Tenga en cuenta que solo están disponibles 1500 últimas líneas de registros y el resto se elimina de heroku dyno.

Vaibhav Sharma
fuente
1

Sugiero usar un complemento, yo uso Logentries. Para usarlo, ejecute en su línea de comando:

heroku addons:create logentries:le_tryit

(ese comando crea el complemento para una cuenta gratuita pero claramente puede actualizar si lo desea)

Logentries le permite ahorrar hasta 5 GB de volumen de registro por mes. Se puede buscar esa información mediante su búsqueda de comandos en los últimos 7 días y tiene alertas en tiempo real.

Entonces, para responder a su pregunta, al usar este complemento, se asegura de que sus registros ya no se pierdan cuando llegue a las 1500 líneas que Heroku guarda por defecto. ¡Espero que esto ayude! ¡Que tengas un gran día!

Jose paez
fuente
1

heroku logs -t nos muestra los registros en vivo. heroku logs -n 1500para un número específico de registros

Pero aun así, recomendaría usar el complemento de rastros de papel que tiene ciertos beneficios y tiene un plan básico gratuito.

svikramjeet
fuente
0

Puedes usar heroku logs -n 1500

Pero este no es un enfoque recomendado (en otras palabras, no muestra la imagen real)

Sugeriría que conecte alguna herramienta de registro. (sumoLogic, paper trail n all) como complemento

Todos tienen una versión gratuita (con pocas limitaciones, aunque suficiente para una pequeña aplicación o entorno de desarrollo, que proporcionará una buena visión y una herramienta para analizar los registros)

Rohit Sureka
fuente
-2

Para la pila de cedro ver:

https://devcenter.heroku.com/articles/oneoff-admin-ps

necesitas correr:

heroku corre bash ...

JBN
fuente
99
En Cedar heroku run bashgira un nuevo dinamómetro para alojar el bashcomando. El sistema de archivos en ese banco de datos no contendrá ningún archivo de registro del banco de datos web "activo", por lo que este enfoque no funcionará.
Ryan Daigle