============================================== Amazon CloudWatch Logsでjson形式ログを表示する ============================================== .. list-table:: :widths: 20 80 * - 公開日 - 2024-11-26 11:53 * - トピック - python * - Zenn - https://zenn.dev/fkzwsoftwaredev/articles/dc4b15b544f8ac watchtowerを使ってログをAmazon CloudWatch Logsに送信する -------------------------------------------------------- ライブラリのインストール ~~~~~~~~~~~~~~~~~~~~~~~~ :: pip install structlog watchtower サンプルコード ~~~~~~~~~~~~~~ .. code:: py import logging import structlog import watchtower # 標準のロギング設定 logging.basicConfig(level=logging.INFO) # watchtowerハンドラーの追加 cloudwatch_handler = watchtower.CloudWatchLogHandler(log_group='sample/structlog_group', log_stream_name='structlog_stream') logging.getLogger().addHandler(cloudwatch_handler) # structlogの設定 structlog.configure( processors=[ structlog.processors.TimeStamper(fmt="%Y-%m-%d %H:%M.%S", utc=False), structlog.processors.JSONRenderer() ], logger_factory=structlog.stdlib.LoggerFactory(), ) # ロガーの取得 logger = structlog.get_logger() # ログの出力 logger.debug("This is a DEBUG message", level="debug", user_id=123, user_name="太郎") logger.info("This is an INFO message", level="info", user_id=123, user_name="太郎") logger.warning("This is a WARNING message", level="warning") logger.error("This is an ERROR message", level="error", error_code=500) logger.critical("This is a CRITICAL message", level="critical", urgent=True) Amazon CloudWatch Logs の表示 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - メッセージ部分にjson形式ログが保存される - debugログは、pythonで出力するログレベルをinfoにしているためAmazon CloudWatch Logsには送信されない .. image:: images/dc4b15b544f8ac/d3874e99d9f6-20241126.png Log Insights で検索 ~~~~~~~~~~~~~~~~~~~~ 検索条件 ^^^^^^^^ .. image:: images/dc4b15b544f8ac/57380aad017c-20241126.png 結果 ^^^^ .. image:: images/dc4b15b544f8ac/b3167b0be519-20241126.png