【问题标题】:Django: Disable RollBar in DevelopmentDjango:在开发中禁用 RollBar
【发布时间】:2018-08-29 03:54:29
【问题描述】:

我正在使用 Rollbar 对我的 Django 应用程序进行错误跟踪。出于某种原因,我从本地主机(开发中)收到错误。

Settings.py:

import rollbar
import os

THUMBNAIL_DEBUG = False
DEBUG = False
TEMPLATE_DEBUG = False

ROLLBAR = {
        'access_token': '****',
        'environment': 'development' if DEBUG else 'production',
        'root': BASE_DIR,
        'class': 'rollbar.logger.RollbarHandler'
    }

rollbar.init(**ROLLBAR)

Settings_Dev.py:

from settings import *

DEBUG = True
TEMPLATE_DEBUG = True
THUMBNAIL_DEBUG = True

我将 settings_dev.py 用于本地开发环境。

【问题讨论】:

标签: python django rollbar


【解决方案1】:

我通常会创建三个设置文件。第一个是适用于开发和生产的基本设置。另外两个从基础导入所有内容并添加额外内容。

所以对于你的情况,你可以有settings_base.py:

THUMBNAIL_DEBUG = False
DEBUG = False
TEMPLATE_DEBUG = False

对于settings_production.py

from settings_production import *

ROLLBAR = {
        'access_token': '****',
        'environment': 'development' if DEBUG else 'production',
        'root': BASE_DIR,
        'class': 'rollbar.logger.RollbarHandler'
    }

rollbar.init(**ROLLBAR)

这种方式 Rollbar 只会在生产中启用。

【讨论】:

    【解决方案2】:

    现在看来您可以使用"enabled" 设置:

    ROLLBAR = {
        'access_token': '****',
        'environment': 'development' if DEBUG else 'production',
        'root': BASE_DIR,
        'class': 'rollbar.logger.RollbarHandler',
        'enabled': not DEBUG,
    }
    

    【讨论】:

      【解决方案3】:

      这个答案不是 Django 特定的,但它提供了三种不同的方法来禁用 rollbar

      通过负载处理程序

      添加payload handler 以忽略所有有效载荷到滚动条。

      import rollbar
      
      def _payload_handler_to_disable_rollbar(payload, **kw) -> bool:
          return False
      
      rollbar.events.add_payload_handler(_payload_handler_to_disable_rollbar)
      

      如果使用 pytest,请在函数 pytest_sessionstart 中的 ./confest.py 中按照 this answer 定义上述内容。

      通过猴子补丁

      Monkeypatch rollbar.report_exc_info 禁用它。

      import rollbar
      
      def _disabled_rollbar_report_exc_info(*_args, **_kwargs) -> None:
          pass
      
      rollbar.report_exc_info = _disabled_rollbar_report_exc_info
      

      如果使用 pytest,请在 ./confest.py 函数 pytest_sessionstart 中按照 this answer 定义上述内容。

      通过 /etc/hosts

      更新 /etc/hosts 以阻止 api.rollbar.com

      $ sudo echo '127.0.0.1 api.rollbar.com' >> /etc/hosts
      $ sudo dscacheutil -flushcache  # On Mac to flush the DNS cache.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        • 2011-12-05
        • 2020-02-26
        • 1970-01-01
        • 1970-01-01
        • 2013-06-02
        • 2017-06-04
        相关资源
        最近更新 更多