created: 2019-01-02T03:55:49.000Z

loguruとnotifiersを使ってslack通知をする

前提

  • slackはincomming webhookをdeprecateとしている
  • notifiersはincomming webhookにしか対応していない
  • 本来はloguruに渡すhandlerをSlackApp経由の実装にした方がよい

それでもやる場合

かなり雑だが、以下のようなコードで通知まで出来る

from notifiers.logging import NotificationHandler
from loguru import logger

SLACK_WEBHOOK_URL = 'https://hooks.slack.com/services/xxxxxxx'

handler = NotificationHandler(
    "slack", defaults={"webhook_url": SLACK_WEBHOOK_URL})
# level:warning以上でslack通知をする
logger.add(handler, level="WARNING")

def get_logger():
    return logger

その他

loguru.logger.catch はデフォルトで例外を再送しない

@logger.catch
def err(): 1/0

if __name__ == '__main__':
    err()
    # こちらも呼ばれる
    l = get_logger()
    l.info("test")

例外を再送したい場合は reraise=True をつける

@logger.catch(reraise=True)
def err(): 1/0