heroku – 如何查看所有的日志

我有一个关于heroku的小应用程序。 每当我想看到日志,我去命令行,并做

heroku logs 

这只显示了我约100行。 有没有办法看到完整的日志我们的应用程序在heroku上?

更新(感谢dawmail333):

 heroku logs -n 1500 

或者,直播日志

 heroku logs -t 

Heroku日志文档

如果你需要超过几千行,你可以使用heroku的Syslog漏斗

另外(旧方法):

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

日志logging在heroku中有了很大的改进!

 $ heroku logs -n 500 

更好!

 $ heroku logs --tail 

参考: http : //devcenter.heroku.com/articles/logging

更新

这些不再是附加组件,而是默认function的一部分:)

Heroku将日志视为按时间顺序排列的事件stream。 由于各种原因,不build议在这种环境下访问文件系统上的*.log文件。

首先,如果您的应用有多个测功机,那么每个日志文件只代表您的应用事件的部分视图。 您将不得不手动汇总所有文件以获取完整视图。

其次,Heroku的文件系统是短暂的意思,只要您的dyno重新启动或移动( 每天发生一次 ),日志文件就会丢失。 所以你最多只能在一天的时间里看到那个单一的测功机的日志。

最后,在运行heroku console的Cedar堆栈上,甚至是heroku run bash都不会连接到当前运行的dyno。 它产生了一个新的专门为bash命令。 这被称为一次性的过程 。 因此,您将无法find其他运行实际http进程的其他dynos的日志文件,这些进程是为heroku run

一般来说, 日志logging和可视性是Heroku的一stream公民,有几个工具可以解决这些问题。 首先,要查看所有dynos和应用程序/堆栈的所有层上的实时应用程序事件stream,请使用heroku logs -t命令将输出尾部输出到您的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 ... 

这对观察您的应用程序的行为很好。 如果要将日志存储较长时间,则可以使用提供日志保留,警报和触发器的多个日志附件之一。

最后,如果你想自己存储日志文件,你可以设置你自己的系统日志漏洞来接收来自Heroku的事件stream,并后处理/分析自己。

总结:不要使用heroku console或者heroku run bash来查看静态日志文件。 使用heroku logs或日志加载项,将您的应用程序导入到Heroku的日志事件stream中。

另请参阅个别stream/filter。

例如只尾巴你的应用程序日志

 heroku logs --source app -t 

或者只看到路由器日志

 heroku logs --ps router 

或将它们链接在一起

 heroku logs --source app --ps worker 

太好了..

那么上面的答案是非常有用的,它会帮助你从命令行查看。 而如果你想从你的GUI做的,所以你必须login到你的Heroku帐户,然后select你的应用程序,最后点击查看日志

图像视图

heroku logs -t显示我们的实时日志。

遵循heroku日志logging

要查看您的日志,我们有:

  1. 日志命令默认回收100个日志行。

heroku日志

  1. 显示最多1500行,–num(或-n)选项。

heroku日志-n 200

  1. 实时显示日志

英雄日志 – 尾巴

  1. 如果你在heroku上有很多应用程序

heroku日志–app your_app_name

可能是值得的,像免费的Papertrail计划添加到您的应用程序。 零configuration,您可以获得7天的日志数据,每天最多10MB,并可以通过2天的日志search。

您可以使用Heroku的命令行界面( CLI使用 )访问您的日志文件。

如果Heroku的CLI已安装,并且您知道您的应用程序名称(如https://myapp.herokuapp.com/ ),那么您可以运行以下命令:

 heroku logs --tail --app=myapp 

您还可以使用以下方式实时访问日志:

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

如果日志告诉你这样的事情:

npm ERR! 这个运行的完整日志可以在下面find:

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

然后你也可以通过Heroku CLI使用bashterminal来访问它们:

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

要查看详细的日志,你需要把两行放在production.rb文件中:

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

然后通过运行

 heroku logs -t 

你可以看到详细的日志。

我喜欢这样做

 heroku logs --tail | tee -a herokuLogs 

您可以让脚本在后台运行,并且可以随时按照自己想要的方式从文本文件中过滤日志。

我的解决scheme是在应用程序第一次启动时获取完整的日志,如:

heroku logs -n 1500 > log

然后添加fgrep -vf使其保持最新,如:

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

对于连续日志logging,只需每隔x分钟(或秒)就使用watch进行迭代。

对于雪松堆栈,请参阅:

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

你需要运行:

heroku运行bash …