Answers:
更新(由于dawmail333):
heroku logs -n 1500
或者,将日志实时拖尾
heroku logs -t
如果您需要数千行,则可以使用heroku的Syslog Drains
或者(旧方法):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
,这是Cedar上可用的最佳方法。如果您需要的行数更多,则需要系统日志消耗:devcenter.heroku.com/articles/logging#syslog_drains
heroku run rails c
。更新!
heroku run cat log/production.log
?
Heroku中的日志记录已大大改善!
$ heroku logs -n 500
更好!
$ heroku logs --tail
参考:http : //devcenter.heroku.com/articles/logging
更新
这些不再是附加组件,而是默认功能的一部分:)
Heroku将日志视为按时间顺序排列的事件流。*.log
出于多种原因,在这种环境中不建议访问文件系统上的文件。
首先,如果您的应用程序具有多个dyno,则每个日志文件仅代表应用程序事件的部分视图。您必须手动汇总所有文件才能获得完整视图。
其次,Heroku上的文件系统是短暂的,这意味着无论何时重新启动或移动测功机(大约每天发生一次),日志文件都会丢失。因此,您最多只能查看该单次dyno日志的一天。
最后,在Cedar堆栈上运行heroku console
甚至heroku run bash
无法将您连接到当前正在运行的dyno。它为bash
命令生成了一个新命令。这称为一次性过程。因此,您将找不到其他dynos的日志文件,这些其他dynos在为生成的dynos上运行实际的http进程heroku run
。
日志记录和可见性通常是Heroku的头等公民,并且有几种工具可以解决这些问题。首先,要查看跨所有dyno以及应用程序/堆栈的所有层的应用程序事件的实时流,请使用heroku logs -t
命令将输出拖至终端。
$ 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的事件流并对自己进行后处理/分析。
摘要:不要使用heroku console
或heroku run bash
查看静态日志文件。使用heroku logs
或日志记录插件将其传递到Heroku的应用程序日志事件流中。
要查看您的日志,我们有:
heroku logs
--num
(或-n
)选项。
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
您可以使用Heroku的命令行界面(CLI用法)访问日志文件。
如果已安装Heroku的CLI,并且您知道应用程序名称(如https://myapp.herokuapp.com/
),则可以运行以下命令:
heroku logs --tail --app=myapp
您还可以使用以下命令实时访问日志:
heroku logs --source app --tail --app=myapp
如果日志告诉您这样的内容:
npm ERR!可以在以下位置找到此运行的完整日志:
npm ERR!/app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
然后,您还可以通过Heroku CLI使用bash终端访问它们:
heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
/usr/bin/less: cannot execute binary files
为您的应用添加免费的Papertrail计划之类的东西可能值得。零配置,您可以获得7天高达10MB /天的日志记录数据,并且可以回溯2天的日志记录。
我更喜欢这样
heroku logs --tail | tee -a herokuLogs
您可以让脚本在后台运行,并且可以随时随地从文本文件中过滤日志。
您需要实现一些日志清除,并且应该在那里清除日志,以查看所有日志(以及管理历史日志):
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
然后登录到您的splunk服务器并搜索任意数量的日志。我正在使用Splunk,这对我来说效果很好。
第二种选择 -您可以购买App的插件,如下所示:(我没有使用这些选项,但是这些是可用的)。
您还可以查看以下选项:如果您希望将日志以JSON格式保存,因为将日志推送到Splunk / ELK等外部系统会有所帮助,因此搜索起来也很容易(在性能上也很合理)在JSON中。
https://github.com/goodeggs/heroku-log-normalizer
它没有Readme.md,但是在https://github.com/goodeggs/bites/issues/20给出了一些解释。
最后
而且,您始终可以使用其他用户已经提到的以下命令:
以下命令将在heroku上生成日志
heroku logs -t -a <app_name>
以下命令将显示来自heroku 的1000行日志
heroku logs -n 1000 -a <app_name>
请注意,只有1500条最新的日志行可用,并且其余的行已从heroku dyno中删除。
您可以使用
heroku logs -n 1500
但这不是推荐的方法(换句话说,它不会向您显示真实情况)
我建议您插入一些日志记录工具。(sumoLogic,纸张记录为n all)作为附加组件
它们都有一个免费版本(没有什么限制,尽管对于一个小型应用程序或开发环境已经足够了,这将提供很好的见解和分析日志的工具)
heroku run bash
旋转一个新的dyno来承载bash
命令。该dyno上的文件系统将不包含来自“活动”网络dynos的任何日志文件,因此该方法无效。