💨

Amazon CloudWatch Logsでjson形式ログを表示する

2024/11/26に公開

watchtowerを使ってログをAmazon CloudWatch Logsに送信する

ライブラリのインストール

pip install structlog watchtower

サンプルコード

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には送信されない

Log Insights で検索

検索条件

結果

Discussion