📝
PythonからGCPのLoggingへNOTICEログを吐く
サマリ
python logging API で Google Cloud Logging へ Noticeログを吐くには、ログレベル300を使えばよいです。
python
logger.notice = lambda message: logger.log(300, message)
以下、詳細
PythonからGCPのLoggingにログを吐くとき、以下の二つのやり方があります:
Google Cloud Logging を直接使ってしまうとポータビリティが損なわれるので、ポータビリティを意識する場合は Python Logging API を使うことが望ましいといえます。
某プロジェクトでは、ログレベルを6段階で定義していました:
プロジェクトにおける定義 | Python Logging | |
---|---|---|
CRITICAL | logger.critical() | |
ERROR | logger.error() | |
WARNING | logger.warning() | |
NOTICE | - | |
INFO | logger.info() | |
DEBUG | logger.debug() | |
Python Logging API には notice() がなく、NOTICEメッセージを吐く方法がわかりませんでした。
該当するログレベルの値も定義されていません。
くそーパッチ当ててやるーと意気込んでソースを読んだら、NOTICE = 300 と定義されていました。
ログレベル300を指定してログ出力してみたところ、無事にNOTICEメッセージをStackdriverに送れました。
ソースの該当箇所: https://github.com/googleapis/python-logging/blob/master/google/cloud/logging_v2/_helpers.py#L34-L45
リンク
- Python Logging のログレベル https://docs.python.org/ja/3/howto/logging.html#logging-levels
- Apacheのログレベル: https://www.adminweb.jp/apache/log/index4.html
Discussion