💨
Amazon CloudWatch Logsでjson形式ログを表示する
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には送信されない
Discussion