Respostas:
Atualização (graças a dawmail333):
heroku logs -n 1500
ou, para seguir os logs ao vivo
heroku logs -t
Se você precisar de mais do que alguns milhares de linhas, use os Syslog Drains da heroku
Como alternativa (método antigo):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
, é o melhor método disponível no Cedar. Se você precisar de mais linhas do que isso, você precisa de um dreno syslog: devcenter.heroku.com/articles/logging#syslog_drains
heroku run rails c
. Atualizada!
heroku run cat log/production.log
?
O registro melhorou bastante no heroku!
$ heroku logs -n 500
Melhor!
$ heroku logs --tail
referências: http://devcenter.heroku.com/articles/logging
ATUALIZADA
Estes não são mais complementos, mas parte da funcionalidade padrão :)
Heroku trata os logs como fluxos de eventos ordenados pelo tempo. O acesso a *.log
arquivos no sistema de arquivos não é recomendado nesse ambiente por vários motivos.
Primeiro, se seu aplicativo tiver mais de um dinamômetro, cada arquivo de log representará apenas uma exibição parcial dos eventos do seu aplicativo. Você precisaria agregar manualmente todos os arquivos para obter a visualização completa.
Segundo, o sistema de arquivos no Heroku tem um significado efêmero sempre que seu dinamômetro é reiniciado ou movido (o que acontece uma vez por dia ), os arquivos de log são perdidos. Portanto, você obtém apenas a visão de um dia nos logs desse dinamômetro único.
Finalmente, na pilha Cedar em execução heroku console
ou mesmo heroku run bash
não o conecta a um dinamômetro atualmente em execução. Ele gera um novo especificamente para o bash
comando. Isso é chamado de processo único . Como tal, você não encontrará os arquivos de log para seus outros dynos que executam os processos http reais no gerado heroku run
.
O registro e a visibilidade em geral são cidadãos de primeira classe no Heroku e existem várias ferramentas que abordam esses problemas. Primeiro, para ver um fluxo em tempo real de eventos do aplicativo em todos os dynos e em todas as camadas do aplicativo / pilha, use o heroku logs -t
comando para direcionar a saída para o seu 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 ...
Isso funciona muito bem para observar o comportamento do seu aplicativo no momento. Se você deseja armazenar os logs por períodos mais longos, pode usar um dos muitos complementos de log que fornecem retenção, alerta e gatilhos de log.
Por fim, se você deseja armazenar os arquivos de log, pode configurar seu próprio dreno de syslog para receber o fluxo de eventos do Heroku e pós-processar / analisar a si mesmo.
Resumo: não use heroku console
ou heroku run bash
para exibir arquivos de log estáticos. Acesse o fluxo de eventos de log do Heroku para seu aplicativo usando heroku logs
ou um complemento de log.
Veja também fluxos / filtros individuais.
Por exemplo, siga apenas os logs do seu aplicativo
heroku logs --source app -t
Ou veja apenas os logs do roteador
heroku logs --ps router
Ou encadeá-los juntos
heroku logs --source app --ps worker
Tão bom..
heroku logs --ps web.1
(com 1 dyno)
Bem, as respostas acima são muito úteis e ajudarão você a visualizar na linha de comando. Considerando que, se você quiser fazer a partir da GUI, faça login na sua conta heroku, selecione seu aplicativo e, finalmente, clique em exibir logs
Siga no registro Heroku
Para visualizar seus registros, temos:
heroku logs
--num
(ou -n
) opção.
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
Você pode acessar seus arquivos de log usando a interface de linha de comando do Heroku ( uso da CLI ).
Se a CLI do Heroku estiver instalada e você souber o nome do seu aplicativo (como https://myapp.herokuapp.com/
), poderá executar o seguinte comando:
heroku logs --tail --app=myapp
Você também pode acessar os logs em um fluxo em tempo real usando:
heroku logs --source app --tail --app=myapp
Se os logs disserem algo assim:
npm ERR! Um log completo dessa execução pode ser encontrado em:
npm ERR! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
Depois, você também pode acessá-los usando o terminal bash via Heroku CLI:
heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
/usr/bin/less: cannot execute binary files
Pode valer a pena adicionar algo como o plano gratuito do Papertrail ao seu aplicativo. Configuração zero, e você obtém 7 dias de dados de log de até 10 MB / dia e pode pesquisar novamente em 2 dias de logs.
Você precisa usar -t
ou --tail
option e definir o nome do aplicativo heroku.
heroku logs -t --app app_name
Minha solução é obter um log completo na primeira vez que o aplicativo é iniciado, como:
heroku logs -n 1500 > log
adicione fgrep -vf
para mantê-lo atualizado, como:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
para registro contínuo, apenas itere-o usando o relógio a cada x minutos (ou segundos).
Eu prefiro fazer assim
heroku logs --tail | tee -a herokuLogs
Você pode deixar o script em execução em segundo plano e pode simplesmente filtrar os logs do arquivo de texto da maneira que desejar a qualquer momento.
Você precisa ter alguns drenos de logs implementados e deve drená-los para ver todos os logs (gerenciar também os históricos):
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
E, em seguida, faça login no seu servidor splunk e pesquise qualquer número de logs. Estou usando o Splunk e isso está funcionando perfeitamente para mim.
Segunda opção - Você pode comprar add-on no seu aplicativo, conforme indicado abaixo: (eu não usei essas opções, no entanto, essas são as disponíveis).
Você também pode dar uma olhada nas opções abaixo: Se você deseja ter seus logs no formato JSON, pois ajudará se você estiver enviando seus logs para um sistema externo como o Splunk / ELK, seria fácil (também em termos de desempenho) pesquisar em JSON.
https://github.com/goodeggs/heroku-log-normalizer
Não está tendo o arquivo Leiame.md, mas algumas explicações são fornecidas em https://github.com/goodeggs/bites/issues/20
Por último
E você sempre pode usar o comando abaixo, conforme mencionado por outros usuários:
O comando a seguir seguirá os logs de geração no heroku
heroku logs -t -a <app_name>
O comando a seguir mostrará o número de 1000 linhas de logs do heroku
heroku logs -n 1000 -a <app_name>
Observe que apenas 1500 linhas de logs mais recentes estão disponíveis e o restante deles é excluído do heroku dyno.
Sugiro usar um complemento, eu uso o Logentries. Para usá-lo, execute na sua linha de comando:
heroku addons:create logentries:le_tryit
(esse comando cria o complemento para uma conta gratuita, mas claramente você pode atualizar, se quiser)
O Logentries permite economizar até 5 GB de volume de log por mês. Essas informações são pesquisáveis por sua pesquisa de comandos nos últimos 7 dias e possuem alertas em tempo real.
Portanto, para responder sua pergunta, usando este complemento, você garante que seus logs não sejam mais perdidos quando você atingir as 1500 linhas que o Heroku salva por padrão. Espero que isto ajude! Tenha um ótimo dia!
heroku logs -t
mostra os logs ao vivo.
heroku logs -n 1500
para número específico de logs
Mas ainda assim eu recomendaria usar o complemento de trilha de papel que tenha certos benefícios e tenha um plano básico gratuito.
Você pode usar
heroku logs -n 1500
Mas essa não é uma abordagem recomendada (em outras palavras, não mostra a imagem real)
Eu sugiro que você conecte alguma ferramenta de log. (sumoLogic, paper trail n all) como um complemento
Todos eles têm uma versão gratuita (com poucas limitações, embora o suficiente para um aplicativo pequeno ou env dev, que fornecerá uma boa visão e uma ferramenta para analisar logs)
Para pilha de cedros, consulte:
https://devcenter.heroku.com/articles/oneoff-admin-ps
você precisa executar:
heroku run bash ...
heroku run bash
aparece um novo dinamômetro para hospedar o bash
comando. O sistema de arquivos desse dinamômetro não conterá nenhum arquivo de log dos dynos da web 'ativos', portanto essa abordagem não funcionará.