[英]Heroku app - log folder
由于Heroku具有只读文件系统,除了两个目录(log和tmp),我想将python应用程序中的日志转储到其中之一。
推送到heroku服务器应用程序的git存储库包含我创建的两个文件夹(已检查两次,甚至在推送后检查是否有两个目录都下载了应用程序)。 运行“ heroku run bash”时,我只能看到“ tmp”文件夹-使用“ ls -la”甚至看不到“ log”,甚至对应用程序也不可见,因为我收到有关.log文件缺少位置的错误。
2013-08-05T13:10:41.170434+00:00 heroku[web.1]: Starting process with command `python runserver.py`
2013-08-05T13:10:43.132418+00:00 app[web.1]: Traceback (most recent call last):
2013-08-05T13:10:43.609980+00:00 app[web.1]: File "runserver.py", line 2, in <module>
2013-08-05T13:10:43.725134+00:00 app[web.1]: from app_name import app
2013-08-05T13:10:43.850738+00:00 app[web.1]: File "/app/app_name/__init__.py", line 13, in <module>
2013-08-05T13:10:43.968714+00:00 app[web.1]: from logger import flask_debug
2013-08-05T13:10:44.081900+00:00 app[web.1]: File "/app/logger.py", line 8, in <module>
2013-08-05T13:10:44.194540+00:00 app[web.1]: logging.config.dictConfig(CONFIG)
2013-08-05T13:10:44.306174+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/logging/config.py", line 797, in dictConfig
2013-08-05T13:10:44.425589+00:00 app[web.1]: dictConfigClass(config).configure()
2013-08-05T13:10:44.535392+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/logging/config.py", line 579, in configure
2013-08-05T13:10:44.274067+00:00 heroku[web.1]: Process exited with status 1
2013-08-05T13:10:44.287252+00:00 heroku[web.1]: State changed from starting to crashed
这么快想,我想检查一下是否可以将日志放在tmp文件夹中。 该应用程序启动后,一切看起来都很好……但没有任何内容从该应用程序中转储。
我已经迷失了很长时间,因为我一直在寻找解决方案。
也许有人会告诉我:
为什么“ tmp”目录没有收到日志?
http://speedy.sh/VaR2w/logger.conf-这是我的记录器的* .conf文件http://speedy.sh/c3QNs/logger.py-这是记录器
PS。 日志适用于控制台的“ tmp”文件夹配置。
两种更好的方法:
1)使用Heroku的logdrain功能: https ://devcenter.heroku.com/articles/logging#syslog-drains
2)使用其中一个附加 组件 : 想起Papertrail和Logly ,它们都有免费计划。
我在上面使用#1:我有一个ec2实例,该实例将所有dynos的所有日志聚合到一组特定的文件中,我使用logrotate
进行管理。 然后,如果我愿意,我可以使用简单的grep
搜索它们,然后使用tail -f
进行搜索。 在上述ec2实例上,我的rsyslogd配置为:
----- 8 <-----在这里切割----- 8 <-----在这里切割----- 8 <-----在这里切割----- $ ModLoad imtcp $ InputTCPServerRun 5514
# vi /etc/rsyslog.d/01-heroku.conf
if $syslogtag startswith 'app[postgres]' then /matchspot-logs/postgres
& ~
if $syslogtag startswith 'app[pgbackups]' then /matchspot-logs/postgres
& ~
if $syslogtag startswith 'heroku[' then /matchspot-logs/heroku
& ~
if $syslogtag startswith 'app[' then /matchspot-logs/app
& ~
当您heroku run
,它会启动一个新的测功机,以免降低您的Web服务器的性能...这样考虑一下,如果您有2个Web测功机,那么当您heroku run
时会得到哪一个? :)
其他人在这里建议的方法应该对您更好
同时,你应该能够免费添加插件未经证实的帐户
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.