【问题标题】:How to serve up Python logging file with heroku?如何使用 heroku 提供 Python 日志文件?
【发布时间】:2018-02-06 14:59:14
【问题描述】:

所以,我在 Heroku 上运行了一个简单的 Web 应用程序,它为输入一些数据和运行特定计算提供了一个很好的前端(这是一个学术问题)。在整个过程中,我经常使用 python 的 logging 库,因为有很多计算步骤,我想确保它们没问题。

但最近,与我一起做这件事的人决定他们也想查看日志,这应该很容易 - 我只是将它们全部发送到带有 FileHandler.log 文件中,所以我'只是提供文件?但是,不,这不适用于 Heroku。

好吧,好吧,也许我会尝试使用QueueHandler,然后将队列转储到缓存中(我使用的是memcached服务),以便在用户请求日志时抓取它?

log = logging.getLogger("mc")
logqueue = queue.Queue()
queue_handler = QueueHandler(logqueue)
log.handlers = [ queue_handler ]

...(computation, generates logs)

cache.set('logList', logqueue.queue)

这同样适用于我的本地,但不适用于 Heroku;在cache.set 行,日志队列说它是空的。

所有这些东西都可以在我的本地机器上运行,我在这里扯头发,试图弄清楚为什么在 Heroku 上没有任何东西可以运行。这里有人对从这里尝试什么有任何想法吗?

谢谢!

【问题讨论】:

    标签: python logging heroku flask


    【解决方案1】:

    好吧,我设法弄明白了——不出所料,我只是愚蠢!或者至少,我错过了一些重要的东西:

    在代码早期的某个时间点,我需要设置log.setLevel(level = logging.INFO),因为我所有的日志都是INFO 类型。但是,我在manage.py 中做到了,这通常完全没问题,除了在这种特殊情况下我将此应用程序设置为蓝图并将其注册为子 URL ,使用一个不同 manage.py,一个控制一切的更高级别的。最终效果是我的线

    log.setLevel(level = logging.INFO)
    

    当我尝试在使用“master”manage.py 的 Heroku 上运行它时,连同原始 manage.py 中的所有其他内容一起被跳过。因此,我的日志存在,但日志级别设置不正确,因此根本没有记录任何日志。

    希望这是有道理的,真令人头疼

    【讨论】:

      猜你喜欢
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多