我在heroku上有一个小应用程序。 每当我想看日志时,我都会去命令行作 web
heroku logs
这只能让我看到大约100行。 有没有办法在heroku上查看咱们的应用程序的完整日志? bash
对于雪松堆栈,请参阅: app
https://devcenter.heroku.com/articles/oneoff-admin-ps 工具
你须要运行: post
heroku运行bash ... spa
Heroku将日志视为按时间排序的事件流。 出于各类缘由,不建议在此类环境中访问文件系统上的*.log
文件。 命令行
首先,若是您的应用有多个dyno,则每一个日志文件仅表明您应用事件的部分视图。 您必须手动聚合全部文件才能得到完整视图。 日志
其次,Heroku上的文件系统是短暂的意思,不管什么时候重启或移动dyno(大约天天一次 )日志文件都会丢失。 所以,您最多只能得到一天的单个dyno日志。 code
最后,在运行heroku console
甚至heroku run bash
的Cedar堆栈上, heroku run bash
不会将您链接到当前正在运行的dyno。 它专门为bash
命令生成一个新的。 这称为一次性过程 。 所以,您将找不到运行实际http进程的其余dynos的日志文件,这些进程是为heroku run
。 router
通常来讲, 记录和可见性是Heroku的一流公民,有几种工具能够解决这些问题。 首先,要查看全部dynos和应用程序/堆栈的全部层的应用程序事件的实时流,请使用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 -t
向咱们显示实时日志。
可能值得将免费的Papertrail计划添加到您的应用程序中。 零配置,您能够得到7天的日志数据,最高可达10MB /天,并能够搜索2天的日志。
另请参阅各个流/过滤器。
例如,仅尾随您的应用程序日志
heroku logs --source app -t
或者只查看路由器日志
heroku logs --ps router
或者把它们连在一块儿
heroku logs --source app --ps worker
超好的..