« ^ »

pybrakeを用いてerrbitにエラーを送る

所要時間: 約 1分

インストール

pybrakeをインストールする。

pip install pybrake
Requirement already satisfied: pybrake in MASK/lib/python3.8/site-packages (0.4.6)
Requirement already satisfied: tdigest in MASK/lib/python3.8/site-packages (from pybrake) (0.5.2.2)
Requirement already satisfied: accumulation-tree in MASK/lib/python3.8/site-packages (from tdigest->pybrake) (0.6.2)
Requirement already satisfied: pyudorandom in MASK/lib/python3.8/site-packages (from tdigest->pybrake) (1.0.0)

環境変数を読み込む。

変数などは環境変数から読み込むようにした。通常はairbrakeのAPIへのURLは 必要ないが、errbitなどairbrakeのクローンとして動作するようなダミーサー バーを用いる場合はせていが必要になる。

import os


AIRBRAKE_API_HOST = os.environ.get("AIRBRAKE_API_HOST", "https://api.airbrake.io")
AIRBRAKE_ENVIRONMENT = os.environ["AIRBRAKE_ENVIRONMENT"]
AIRBRAKE_PROJECT_ID = os.environ["AIRBRAKE_PROJECT_ID"]
AIRBRAKE_PROJECT_KEY = os.environ["AIRBRAKE_PROJECT_KEY"]

設定

pybrake.Notifierをloggingのhandlerとして設定する。 loggerではairbrake用に設定したhandlerを利用する。

import logging.config
import pybrake

pybrake_notifier = pybrake.Notifier(
    project_id=AIRBRAKE_PROJECT_ID,
    project_key=AIRBRAKE_PROJECT_KEY,
    environment=AIRBRAKE_ENVIRONMENT,
    host=AIRBRAKE_API_HOST,
)


LOGGING_CONFIG = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "raw": {
            "format": "%(message)s",
        },
    },
    "handlers": {
        "airbrake": {
            "()": "pybrake.LoggingHandler",
            "notifier": pybrake_notifier,
            "level": "INFO",
        },
    },
    "loggers": {
        "": {
            "handlers": ["airbrake"],
            "level": "INFO",
        },
    },
}

logging.config.dictConfig(LOGGING_CONFIG)

送信

logging.getLogger()でloggerを取得しログを送信するとairbrakeに内容が送られる。 extraの内容も同様に送信される。

import logging

logger = logging.getLogger(__name__)
logger.info("This is test message", extra={"foo": "bar"})