Risposte:
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 }
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
heroku run rails c
. Aggiornato!
heroku run cat log/production.log
?
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 :)
Heroku tratta i registri come flussi di eventi ordinati per tempo. L'accesso ai *.log
file 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 console
o addirittura heroku run bash
non ti connette a un dyno attualmente in esecuzione. Ne genera uno nuovo appositamente per il bash
comando. 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 -t
comando 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 console
o heroku run bash
per visualizzare i file di registro statici. Entra nel flusso di eventi di log di Heroku per la tua app utilizzando heroku logs
o un componente aggiuntivo di registrazione.
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..
heroku logs --ps web.1
(con 1 dyno)
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
Segui la registrazione di Heroku
Per visualizzare i tuoi registri abbiamo:
heroku logs
--num
(o -n
) opzione.
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
È 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
/usr/bin/less: cannot execute binary files
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.
Devi utilizzare -t
o l' --tail
opzione e devi definire il nome dell'app heroku.
heroku logs -t --app app_name
La mia soluzione è quella di ottenere il registro completo al primo avvio dell'applicazione, come:
heroku logs -n 1500 > log
quindi aggiungi fgrep -vf
per 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).
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.
È necessario disporre di alcuni log di svuotamento implementati e dovrebbe scaricare i log lì, per vedere tutti i log (gestire anche i log storici):
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.
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).
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.
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!
heroku logs -t
ci mostra i registri live.
heroku logs -n 1500
per 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.
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)
Per la pila di cedri vedi:
https://devcenter.heroku.com/articles/oneoff-admin-ps
devi correre:
heroku run bash ...
heroku run bash
gira un nuovo dyno per ospitare il bash
comando. Il filesystem su quel dyno non conterrà alcun file di log delle dinamiche web "attive", quindi questo approccio non funzionerà.