我在heroku上有一个小应用程序.每当我想看日志时,我都会去命令行做
heroku logs
Run Code Online (Sandbox Code Playgroud)
这只能让我看到大约100行.有没有办法在heroku上查看我们的应用程序的完整日志?
gle*_*ebm 756
更新(感谢dawmail333):
heroku logs -n 1500
Run Code Online (Sandbox Code Playgroud)
或者,将日志拖到现场
heroku logs -t
Run Code Online (Sandbox Code Playgroud)
如果你需要超过几千行,你可以使用heroku的Syslog Drains
或者(旧方法):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
Run Code Online (Sandbox Code Playgroud)
nes*_*sur 138
heroku中的日志记录有很大改进!
$ heroku logs -n 500
Run Code Online (Sandbox Code Playgroud)
更好!
$ heroku logs --tail
Run Code Online (Sandbox Code Playgroud)
参考:http://devcenter.heroku.com/articles/logging
更新
这些不再是附加组件,而是默认功能的一部分:)
Rya*_*gle 51
Heroku将日志视为按时间排序的事件流.*.log出于各种原因,不建议在此类环境中访问文件系统上的文件.
首先,如果您的应用有多个dyno,则每个日志文件仅代表您应用事件的部分视图.您必须手动聚合所有文件才能获得完整视图.
其次,Heroku上的文件系统是短暂的意思,无论何时重启或移动dyno(大约每天一次)日志文件都会丢失.因此,您最多只能获得一天的单个dyno日志.
最后,在Cedar堆栈上运行heroku console甚至heroku run bash没有将您连接到当前正在运行的dyno.它专门为bash命令生成一个新的.这称为一次性过程.因此,您将找不到正在运行实际http进程的其他dynos的日志文件heroku run.
一般来说,记录和可见性是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 ...
Run Code Online (Sandbox Code Playgroud)
这对于立即观察应用程序的行为非常有用.如果要将日志存储更长时间,可以使用提供日志保留,警报和触发器的众多日志记录加载项之一.
最后,如果您想自己存储日志文件,可以设置自己的系统日志,以接收来自Heroku的事件流并自行进行后处理/分析.
摘要:不要使用heroku console或heroku run bash查看静态日志文件.使用heroku logs或记录加载项管理Heroku的应用程序日志事件流.
Sha*_*der 23
另请参阅各个流/过滤器.
例如,仅尾随您的应用程序日志
heroku logs --source app -t
Run Code Online (Sandbox Code Playgroud)
或者只查看路由器日志
heroku logs --ps router
Run Code Online (Sandbox Code Playgroud)
或者把它们连在一起
heroku logs --source app --ps worker
Run Code Online (Sandbox Code Playgroud)
超好的..
Ani*_*ari 19
以上答案非常有用,它将帮助您从命令行查看.而如果你想要,所以你必须登录到您的Heroku帐户,然后选择您的应用程序,最后点击查看日志,以从GUI做
小智 14
要查看您的日志,我们有:
heroku日志
heroku日志-n 200
heroku logs --tail
heroku logs --app your_app_name
您可以使用Heroku的命令行界面(CLI使用)访问您的日志文件.
如果安装了Heroku的CLI并且您知道了应用程序名称(例如https://myapp.herokuapp.com/),则可以运行以下命令:
heroku logs --tail --app=myapp
Run Code Online (Sandbox Code Playgroud)
您还可以使用以下方法访问实时流中的日志:
heroku logs --source app --tail --app=myapp
Run Code Online (Sandbox Code Playgroud)
如果日志告诉你这样的事情:
错误的ERR!可以在以下位置找到此运行的完整日志:
错误的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
Run Code Online (Sandbox Code Playgroud)
小智 8
我的解决方案是在应用程序第一次启动时获取完整的日志,例如:
heroku logs -n 1500 > log
Run Code Online (Sandbox Code Playgroud)
然后添加fgrep -vf以使其保持最新,例如:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
Run Code Online (Sandbox Code Playgroud)
对于连续记录,只需每隔 x 分钟(或秒)使用 watch 对其进行迭代。
您需要使用-t或--tail选项,并且需要定义您的heroku 应用程序名称。
heroku logs -t --app app_name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
261478 次 |
| 最近记录: |