はじめに
Pythonで書いたCloud FunctionsのログをCloud Logging(Stackdriver Logging)に出力する方法を記載しています。
手順
以下のように書きます。
cloud_logger.setLevel
で指定したレベル以上のものがCloud Loggingに記録されます。
import logging
import google.cloud.logging
from google.cloud.logging.handlers import CloudLoggingHandler
client = google.cloud.logging.Client()
handler = CloudLoggingHandler(client)
cloud_logger = logging.getLogger('cloudLogger')
cloud_logger.setLevel(logging.DEBUG) # defaults to WARN
# cloud_logger.setLevel(logging.INFO) # defaults to WARN
cloud_logger.addHandler(handler)
cloud_logger.debug('debug')
cloud_logger.info('info')
cloud_logger.warn('warn')
requirements.txt には以下2つを記載してください。(バージョン番号は省略しています)
google-cloud-logging
google-cloud-core
google-cloud-core
を書かない場合は以下のエラーがでました。
ERROR: (gcloud.beta.functions.deploy) OperationError: code=3, message=Function failed on loading user code. Error message: __init__() takes 2 positional arguments but 3 were given
参考
Integration with Python logging module
https://googleapis.dev/python/logging/latest/stdlib-usage.html
Python Logging Module Handler
https://google-cloud-python.readthedocs.io/en/0.32.0/logging/handlers.html