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
要查看您的日志,我们有:
- 日志命令默认回收100个日志行。
heroku日志
- 显示最多1500行,–num(或-n)选项。
heroku日志-n 200
- 实时显示日志
英雄日志 – 尾巴
- 如果你在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进行迭代。