heroku - come vedere tutti i registri


468

Ho una piccola app su heroku. Ogni volta che voglio vedere i registri vado alla riga di comando e lo faccio

heroku logs

Questo mi mostra solo circa 100 righe. Non esiste un modo per visualizzare i registri completi per la nostra applicazione su heroku?

Risposte:


785

Aggiornamento (grazie a dawmail333):

heroku logs -n 1500

o, per accodare i registri dal vivo

heroku logs -t 

Documentazione del registro di Heroku

Se hai bisogno di più di qualche migliaio di righe puoi usare gli Syslog Drains di heroku

In alternativa (vecchio metodo):

$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }

5
Questo ora non funziona su una pila di cedri. Qualcuno ha trovato una nuova alternativa?
nathanvda,

2
Basta usare heroku logs -n 1500, è il miglior metodo disponibile su Cedar. Se hai bisogno di più righe di quelle, hai bisogno di uno scarico syslog: devcenter.heroku.com/articles/logging#syslog_drains
Liam Dawson,

Questo è un suggerimento utile anche per i problemi relativi alla pipeline degli asset: heroku logs -n 2000 | grep 'precompilato'
Dave Collins,

In realtà lo è heroku run rails c. Aggiornato!
glebm,

3
Per il vecchio metodo, perché dovresti eseguire una console rails invece che solo heroku run cat log/production.log?
Chloe,

139

La registrazione è notevolmente migliorata in heroku!

$ heroku logs -n 500

Meglio!

$ heroku logs --tail

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

AGGIORNATO

Questi non sono più componenti aggiuntivi, ma fanno parte della funzionalità predefinita :)


4
Inoltre, -n può arrivare fino a 1500, suppongo che Heroku abbia tagliato qualsiasi cosa dopo.
Liam Dawson,

52

Heroku tratta i registri come flussi di eventi ordinati per tempo. L'accesso ai *.logfile sul filesystem non è raccomandato in tale ambiente per una serie di motivi.

Innanzitutto, se la tua app ha più di un dyno, ogni file di registro rappresenta solo una visione parziale degli eventi della tua app. Dovresti aggregare manualmente tutti i file per ottenere la visualizzazione completa.

In secondo luogo, il filesystem su Heroku ha un significato effimero ogni volta che il tuo dyno viene riavviato o spostato (cosa che accade circa una volta al giorno ) i file di registro vengono persi. Quindi puoi vedere al massimo solo un giorno nei registri di quel singolo dyno.

Infine, sullo stack Cedar in esecuzione heroku consoleo addirittura heroku run bashnon ti connette a un dyno attualmente in esecuzione. Ne genera uno nuovo appositamente per il bashcomando. Questo è chiamato un processo unico . Pertanto, non troverai i file di registro per le altre tue dinamiche che eseguono i processi http effettivi su quello generato heroku run.

La registrazione e la visibilità in generale sono cittadini di prima classe su Heroku e ci sono diversi strumenti per affrontare questi problemi. Innanzitutto, per visualizzare un flusso in tempo reale di eventi dell'applicazione su tutte le dinamiche e tutti i livelli dell'applicazione / stack, utilizzare il heroku logs -tcomando per adeguare l'output al terminale.

$ 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 ...

Funziona benissimo per osservare subito il comportamento della tua applicazione. Se si desidera archiviare i registri per periodi di tempo più lunghi, è possibile utilizzare uno dei numerosi componenti aggiuntivi di registrazione che forniscono conservazione dei log, avvisi e trigger.

Infine, se si desidera archiviare i file di registro da soli, è possibile impostare il proprio drain di syslog per ricevere il flusso di eventi da Heroku e post-process / analizzare te stesso.

Riepilogo: non utilizzare heroku consoleo heroku run bashper visualizzare i file di registro statici. Entra nel flusso di eventi di log di Heroku per la tua app utilizzando heroku logso un componente aggiuntivo di registrazione.


23

Vedi anche i singoli stream / filtri.

Ad esempio, solo i registri dell'applicazione

heroku logs --source app -t

Oppure vedi solo i registri del router

heroku logs --ps router

O incatenali insieme

heroku logs --source app --ps worker

Così buono..


5
Per vedere solo i registri della mia applicazione, lo faccio: heroku logs --ps web.1(con 1 dyno)
Maxence,

22

Bene, le risposte sopra sono molto utili e ti aiuteranno a visualizzare dalla riga di comando. Considerando che se vuoi fare dalla tua GUI quindi devi accedere al tuo account heroku e quindi selezionare la tua applicazione e infine fare clic su Visualizza registri

vista immagine


1
Questo metodo mostra l'output del registro solo quando si verificano, a partire dal momento in cui si fa clic sull'opzione "Visualizza registri". Quindi non è utile a meno che tu non voglia semplicemente accodare i log senza entrare nella console.
Jeremy Gunter,

2
non c'è alcuna opzione per vedere tutti i registri da questa stessa interfaccia utente?
Sunil Garg,

16

Segui la registrazione di Heroku

Per visualizzare i tuoi registri abbiamo:

  1. Il comando logs recupera 100 linee di registro per impostazione predefinita.

heroku logs

  1. mostra un massimo di 1500 righe, --num(o -n) opzione.

heroku logs -n 200

  1. Mostra i registri in tempo reale

heroku logs --tail

  1. Se hai molte app su heroku

heroku logs --app your_app_name



8

È possibile accedere ai file di registro utilizzando l'interfaccia della riga di comando di Heroku ( utilizzo CLI ).

Se la CLI di Heroku è installata e conosci il nome della tua applicazione (come https://myapp.herokuapp.com/), puoi eseguire il seguente comando:

heroku logs --tail --app=myapp

Puoi anche accedere ai log in un flusso in tempo reale usando:

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

Se i registri ti dicono qualcosa del genere:

npm ERR! Un registro completo di questa corsa è disponibile in:

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

Quindi puoi anche accedervi usando il terminale bash tramite l'interfaccia della riga di comando di Heroku:

heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log

Ricevo/usr/bin/less: cannot execute binary files
Michael Fulton il

7

Potrebbe valerne la pena aggiungere qualcosa come il piano Papertrail gratuito alla tua app. Zero configurazione e ottieni 7 giorni di registrazione dei dati fino a 10 MB / giorno e puoi cercare di nuovo in 2 giorni di log.


4

per i file WAR:

Non ho usato github, invece ho caricato direttamente un file WAR (che ho trovato molto più semplice e veloce).

Quindi il seguente mi ha aiutato:

heroku logs --app appname

Spero che possa aiutare qualcuno.


4

Devi utilizzare -to l' --tailopzione e devi definire il nome dell'app heroku.

heroku logs -t --app app_name

4

La mia soluzione è quella di ottenere il registro completo al primo avvio dell'applicazione, come:

heroku logs -n 1500 > log

quindi aggiungi fgrep -vfper tenerlo aggiornato, come:

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

per la registrazione continua, basta iterarlo usando watch per ogni x minuti (o secondi).


2

Per visualizzare il registro dettagliato è necessario inserire due righe nel production.rbfile:

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

e poi correndo

heroku logs -t

puoi vedere i registri dettagliati.


2

Preferisco farlo in questo modo

heroku logs --tail | tee -a herokuLogs

Puoi lasciare lo script in esecuzione in background e puoi semplicemente filtrare i log dal file di testo nel modo che preferisci in qualsiasi momento.


grazie, mi ci è voluto un po 'per scorrere ma finalmente ho trovato la soluzione per me.
Meinkraft,

2

È necessario disporre di alcuni log di svuotamento implementati e dovrebbe scaricare i log lì, per vedere tutti i log (gestire anche i log storici):

  1. Prima opzione : è possibile utilizzare Splunk: è possibile scaricare tutti i registri come:
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name

Quindi accedi al tuo server splunk e cerca un numero qualsiasi di registri. Sto usando Splunk e questo funziona perfettamente per me.

  1. Seconda opzione : puoi acquistare un componente aggiuntivo per la tua app, come indicato di seguito: (Non ho usato queste opzioni, tuttavia queste sono quelle disponibili).

    • Timber.io
    • Sumo Logic
    • LogEnteries
    • Log DNA
    • Papertrail

Puoi anche dare un'occhiata alle opzioni seguenti: Se vuoi avere i tuoi log in formato JSON, poiché ti aiuterà se stai spingendo i tuoi log su un sistema esterno come Splunk / ELK, sarebbe facile (anche dal punto di vista delle prestazioni) cercare in JSON.

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

Non sta avendo Readme.md, ma alcune spiegazioni sono fornite su https://github.com/goodeggs/bites/issues/20

infine

E puoi sempre usare il comando seguente come già indicato da altri utenti:

Il seguente comando regolerà i log di generazione su heroku

heroku logs -t -a <app_name>

Il seguente comando mostrerà il numero 1000 di righe di log da heroku

heroku logs -n 1000 -a <app_name>

Nota: sono disponibili solo 1500 ultime righe di log e il resto viene eliminato da heroku dyno.


1

Suggerisco di utilizzare un componente aggiuntivo, utilizzo Logentries. Per usarlo, esegui nella tua riga di comando:

heroku addons:create logentries:le_tryit

(quel comando crea il componente aggiuntivo per un account gratuito ma chiaramente puoi aggiornare se vuoi)

Logentries ti consente di risparmiare fino a 5 GB di volume di log al mese. Queste informazioni sono ricercabili dalla loro ricerca di comandi negli ultimi 7 giorni e ha avvisi in tempo reale.

Quindi, per rispondere alla tua domanda, usando questo componente aggiuntivo ti assicuri che i tuoi log non vengano più persi quando raggiungi le 1500 linee che Heroku salva per impostazione predefinita. Spero che sia di aiuto! Vi auguro una buona giornata!


1

heroku logs -t ci mostra i registri live. heroku logs -n 1500per un numero specifico di registri

Ma consiglierei comunque di utilizzare il componente aggiuntivo di traccia cartacea che ha alcuni vantaggi e ha un piano di base gratuito.


0

Puoi usare heroku logs -n 1500

Ma questo non è un approccio raccomandato (in altre parole non ti mostra l'immagine reale)

Vorrei suggerire di collegare qualche strumento di registrazione. (sumoLogic, paper trail n all) come componente aggiuntivo

Tutti hanno una versione gratuita (con poche limitazioni, anche se abbastanza per una piccola app o dispositivo di sviluppo, che fornirà una buona visione e uno strumento per analizzare i log)


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.