繁体   English   中英

Heroku应用-日志文件夹

[英]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文件夹中。 该应用程序启动后,一切看起来都很好……但没有任何内容从该应用程序中转储。

我已经迷失了很长时间,因为我一直在寻找解决方案。

也许有人会告诉我:

  1. 为什么/ app_name文件夹下的“ log”目录不可见?
  2. 为什么“ 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)使用其中一个附加 组件想起PapertrailLogly ,它们都有免费计划。

我在上面使用#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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM