2013-08-05 96 views
0

由于Heroku has read-only file system除了两个目录(日志和tmp)我想​​从python应用程序转储我的日志到其中之一。Heroku应用程序 - 日志文件夹

推送到heroku服务器应用程序的git存储库包含由我创建的两个文件夹(检查两次,甚至下载应用程序后推检查如果两个目录在那里)。 运行“heroku运行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文件夹中是不可见的?
  2. 为什么“tmp”目录没有收到日志?

    http://speedy.sh/VaR2w/logger.conf - 这里是我的伐木工人 http://speedy.sh/c3QNs/logger.py的* .conf文件 - 这里是伐木工人

PS。日志正在为控制台进行“tmp”文件夹配置。

+1

我通常讨厌这样的评论,但是:你能通过将日志写入磁盘来共享你试图实现的目标吗?如果您手动重新启动测功机等,如果您有多个dynos,他们会写入不同的日志,如果您想要从应用中持久保存日志,那么日志会在任何时候都会“消失”(大约每天一次)你自己使用有更好的方法。 –

+0

我有点担心这可能是答案,因为heroku的工作原理与您的回答一致。 虽然我仍然很好奇,为什么我看不到/记录,而我写的是应该有权访问它,为什么,即使应用程序没有重新启动,在/ tmp中也没有日志。 你有什么更好的方法? :) – Archarachne

回答

0

两个更好的办法:

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 
& ~ 
+0

不幸的是,我没有信用卡,没有验证,Heroku不会让我添加任何东西,即使它是免费的。 虽然谢谢你的建议:) – Archarachne

+0

你确定吗?甚至没有日志排水渠?绝对确定? –

+0

我无法打开redis,我也尝试了loggly。 问题是,即使使用基本插件是免费的,它不会被开启没有帐户验证 - 只能通过信用卡:( – Archarachne

0

当你heroku run,它旋转了一个新的赛道,以免降低您的Web服务器的性能......想想像这样,如果你有2个网页打印机,当你使用heroku run时,你会得到哪一个?:)

通过这里的其他人提出的方法应该为你工作

也更好的方式,你应该可以免费添加插件未经证实的帐户

相关问题