【问题标题】:Stop New Relic / Celery From Polluting Logs on Heroku阻止 New Relic / Celery 污染 Heroku 上的日志
【发布时间】:2012-11-07 01:50:37
【问题描述】:

问题

如何阻止 New Relic / Celery 不断将以下内容打印到 Heroku 的日志中。

app[scheduler.1]: [INFO/MainProcess] Starting new HTTP connection (1): collector-6.newrelic.com
app[scheduler.1]: [INFO/MainProcess] Starting new HTTP connection (1): collector-6.newrelic.com
app[scheduler.1]: [INFO/MainProcess] Starting new HTTP connection (1): collector-6.newrelic.com
app[scheduler.1]: [INFO/MainProcess] Starting new HTTP connection (1): collector-6.newrelic.com

设置

上述日志条目每分钟出现一次。应用程序报告这是一个 celery worker 通过Procfile 启动的(部分):

scheduler: newrelic-admin run-program python manage.py celery worker --loglevel=ERROR -B -E --maxtasksperchild=1000

尽管将loglevel 设置为ERROR,但 celery 似乎忽略了这个参数。有趣的是,在我的本地机器上,这个设置是被尊重的。

版本

celery==3.0.12
django-celery==3.0.11
newrelic==1.6.0.13

【问题讨论】:

  • 日志消息实际上来自嵌入在“newrelic”包中的“请求”模块。您需要以某种方式让日志记录模块或 Celery 抑制来自“newrelic.lib.requests”的任何日志记录。我不知道你如何为你的设置做到这一点,所以不提供这个作为答案。
  • 啊,感谢格雷厄姆的洞察力。让我看看我能不能解决这个问题,如果我找到了我会发布我的解决方案。
  • 更多信息:来自urllib3,封装在requests,封装在newrelicSee entryrequests。正在调查...

标签: python django celery newrelic


【解决方案1】:

根据 New Relic 支持的临时解决方案是将以下内容添加到您的 settings.py 或 celeryconfig.py(取决于您用于 celery 设置)。

import logging
class RequestsConnectionFilter(logging.Filter):
    def filter(self, record):
        return False
logging.getLogger('newrelic.lib.requests.packages.urllib3.connectionpool').addFilter(RequestsConnectionFilter())

NR 支持人员告诉我,他们计划将这种抑制构建到 Python 代理的未来版本中。

【讨论】:

    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2021-05-06
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多