Python Heroku应用程序-日志文件夹

Python Heroku应用程序-日志文件夹,python,logging,heroku,flask,Python,Logging,Heroku,Flask,除了两个目录(log和tmp),我想将我的日志从python应用程序转储到其中一个目录 推送到heroku服务器应用程序的git存储库包含my创建的两个文件夹(检查了两次,甚至在推送后下载的应用程序也检查了两个目录是否都存在)。 在运行“heroku run bash”时,我只能看到“tmp”文件夹-“log”在使用“ls-la”时不可见,甚至在应用程序中也不可见,因为我收到了有关.log文件丢失位置的错误 2013-08-05T13:10:41.170434+00:00 heroku[web.

除了两个目录(log和tmp),我想将我的日志从python应用程序转储到其中一个目录

推送到heroku服务器应用程序的git存储库包含my创建的两个文件夹(检查了两次,甚至在推送后下载的应用程序也检查了两个目录是否都存在)。 在运行“heroku run bash”时,我只能看到“tmp”文件夹-“log”在使用“ls-la”时不可见,甚至在应用程序中也不可见,因为我收到了有关.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
2013-08-05T13:10:41.170434+00:00 heroku[web.1]:使用命令`python runserver.py'启动进程`
2013-08-05T13:10:43.132418+00:00应用程序[web.1]:回溯(最近一次通话):
2013-08-05T13:10:43.609980+00:00应用程序[web.1]:文件“runserver.py”,第2行,在
2013-08-05T13:10:43.725134+00:00应用程序[网站1]:来自应用程序名称导入应用程序
2013-08-05T13:10:43.850738+00:00应用程序[web.1]:文件“/app/app\u name/\uuuuu init\uuuuu.py”,第13行,在
2013-08-05T13:10:43.968714+00:00应用程序[web.1]:来自记录器导入和调试
2013-08-05T13:10:44.081900+00:00应用程序[web.1]:文件“/app/logger.py”,第8行,在
2013-08-05T13:10:44.194540+00:00应用程序[web.1]:logging.config.dictConfig(配置)
2013-08-05T13:10:44.306174+00:00app[web.1]:文件“/app/.heroku/python/lib/python2.7/logging/config.py”,第797行,在dictConfig中
2013-08-05T13:10:44.425589+00:00应用程序[web.1]:dictConfigClass(config).configure()
2013-08-05T13:10:44.535392+00:00 app[web.1]:文件“/app/.heroku/python/lib/python2.7/logging/config.py”,第579行,在configure中
2013-08-05T13:10:44.274067+00:00 heroku[web.1]:进程已退出,状态为1
2013-08-05T13:10:44.287252+00:00 heroku[web.1]:状态从开始更改为崩溃
我想检查一下是否可以将日志放在tmp文件夹中。应用程序启动,一切看起来都很好。。。但应用程序中没有转储任何内容

事实上,我迷路了,因为我已经寻找了相当长一段时间的解决方案

也许有人会告诉我:

  • 为什么/app_name文件夹下的“log”目录不可见

  • 为什么“tmp”目录不接收日志

    -这是我的记录器的*.conf文件 -这里是伐木工人

  • PS.日志用于控制台的“tmp”文件夹配置。

    有两种更好的方法:

    1) 使用Heroku的logdrain功能:

    2) 使用其中一个插件:Papertrail和Logly,它们都有免费的计划

    我使用上面的#1:我设置了一个ec2实例,它将所有dyno中的所有日志聚合到一组特定的文件中,我使用
    logrotate
    来管理这些文件。然后我使用simple
    grep
    搜索它们,如果我愿意,我还可以使用
    tail-f
    进行跟踪。我在所述ec2实例上的rsyslogd配置为:

    -----8<----切这里----8<----切这里----8<----切这里----- $ModLoad imtcp $InputCPServerRun 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时,它会启动一个新的dyno,从而不会降低web服务器的性能。。。这样想一下,如果你有两个网络动态对象,当你运行heroku时,你会得到哪一个

    这里其他人建议的方法应该对你更有效


    此外,您应该能够在没有确认帐户的情况下添加免费插件

    我通常不喜欢这种评论,但是:您能否通过将日志写入磁盘来分享您想要实现的目标?日志将在dyno启动时“消失”(大约每天一次),此外,如果您有多个dyno,它们将写入不同的日志,如果您手动重新启动dyno,等等。。。如果你想从你的应用程序中保存日志供自己使用,有更好的方法。我有点担心这可能是答案,因为heroku会在你回应时工作。尽管我仍然很好奇,为什么在写下我应该有权访问/log时我看不到/log,为什么即使应用程序没有重新启动,/tmp中也没有日志。你有什么更好的办法吗?:)不幸的是,我没有信用卡,没有验证,即使是免费的,Heroku也不会让我添加任何内容。虽然谢谢你的建议:)你确定吗?连排水沟都没有?绝对肯定?我无法打开redis,我也试了试。问题是,即使使用基本插件是免费的,也不能在没有帐户验证的情况下打开它——只有通过信用卡才可以:(重新阅读我的建议:使用日志排水(我回答中的选项1)。它不是一个插件,你可以将你的日志指向一个免费的micro ec2实例。