👌
AWS Lambda PythonのJSON形式のログの例
2023年11月、Lambdaの高度なログ記録コントロール機能がリリースされ、JSON形式のログを簡単にCloudWatch Logsに出力できるようになりました。
Pythonの場合は具体的にどのようなログになるのか気になったので、実行してみました。
使用したランタイムはPython 3.12です。
JSON形式のログの例
サンプルコード:
import json
import logging
logger = logging.getLogger()
def lambda_handler(event, context):
logger.info('メッセージ1')
logger.info('メッセージ2')
logger.info(event)
logger.info(json.dumps(event))
logger.info('第1引数(msg)は必須みたいです', extra=event)
出力されたログ(※実際にはそれぞれ1行で出力されますが、ここでは読みやすさのために改行・インデントしています):
{
"time": "2024-09-24T12:10:38.445Z",
"type": "platform.start",
"record": {
"requestId": "e91a538d-bd87-4d22-a52e-826ee685069e",
"version": "$LATEST"
}
}
{
"timestamp": "2024-09-24T12:10:38Z",
"level": "INFO",
"message": "メッセージ1",
"logger": "root",
"requestId": "e91a538d-bd87-4d22-a52e-826ee685069e"
}
{
"timestamp": "2024-09-24T12:10:38Z",
"level": "INFO",
"message": "メッセージ2",
"logger": "root",
"requestId": "e91a538d-bd87-4d22-a52e-826ee685069e"
}
{
"timestamp": "2024-09-24T12:10:38Z",
"level": "INFO",
"message": "{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}",
"logger": "root",
"requestId": "e91a538d-bd87-4d22-a52e-826ee685069e"
}
{
"timestamp": "2024-09-24T12:10:38Z",
"level": "INFO",
"message": "{\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"value3\"}",
"logger": "root",
"requestId": "e91a538d-bd87-4d22-a52e-826ee685069e"
}
{
"timestamp": "2024-09-24T12:10:38Z",
"level": "INFO",
"message": "第1引数(msg)は必須みたいです",
"logger": "root",
"requestId": "e91a538d-bd87-4d22-a52e-826ee685069e",
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
{
"time": "2024-09-24T12:10:38.448Z",
"type": "platform.report",
"record": {
"requestId": "e91a538d-bd87-4d22-a52e-826ee685069e",
"metrics": {
"durationMs": 2.281,
"billedDurationMs": 3,
"memorySizeMB": 128,
"maxMemoryUsedMB": 32,
"initDurationMs": 87.802
},
"status": "success"
}
}
参考:プレーンテキスト形式のログの例
プレーンテキスト形式のログ記録設定で実行した場合、以下のようなログが出力されます。
※プレーンテキスト形式の場合、Pythonのデフォルトのログ記録レベルはWARNであるため、INFOレベルのログを得るにはソースコードにlogger.setLevel('INFO')
を追記しておく必要があります。
START RequestId: b68b4919-de7c-4379-978f-8b72363cb4e6 Version: $LATEST
[INFO] 2024-09-24T12:20:39.204Z b68b4919-de7c-4379-978f-8b72363cb4e6 メッセージ1
[INFO] 2024-09-24T12:20:39.204Z b68b4919-de7c-4379-978f-8b72363cb4e6 メッセージ2
[INFO] 2024-09-24T12:20:39.204Z b68b4919-de7c-4379-978f-8b72363cb4e6 {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
[INFO] 2024-09-24T12:20:39.204Z b68b4919-de7c-4379-978f-8b72363cb4e6 {"key1": "value1", "key2": "value2", "key3": "value3"}
[INFO] 2024-09-24T12:20:39.204Z b68b4919-de7c-4379-978f-8b72363cb4e6 第1引数(msg)は必須みたいです
END RequestId: b68b4919-de7c-4379-978f-8b72363cb4e6
REPORT RequestId: b68b4919-de7c-4379-978f-8b72363cb4e6 Duration: 1.75 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 32 MB
参考文献
Discussion