首页 > 解决方案 > 使用 Watchtower 进行 Python 快速 API 日志记录

问题描述

我编写了下面的代码来使用瞭望塔将日志写入 cloudwatch。

import os
import sys
import time
import boto3
import watchtower
import logging.handlers
from scripts.config import app_configurations

def fast_logging():
    try:
        boto3_session = boto3.session.Session()
        LOG_GROUP = "Fast-Logging"
        log_level = DEBUG
        stream_name = os.path.join("fast_logging"+ "_" + time.strftime("%Y%m%d") + '.log')

        logger = logging.getLogger("Fast-Logger")
        logger.setLevel(log_level)

        formatter = logging.Formatter('%(name)s - %(levelname)s - %(filename)s - %(module)s: %(funcName)s: '
                                      '%(lineno)d - %(message)s')
        log_handler = watchtower.CloudWatchLogHandler(log_group=LOG_GROUP, boto3_session=boto3_session,
                                                      stream_name=stream_name)
        log_handler.setFormatter(formatter)
        logger.addHandler(log_handler)
        return logger
    except Exception as e:
        raise e


logger = fast_logging()

上面的代码适用于普通的 python 代码,但无法将日志转储到 cloudwatch 流中以获取 Fast API 服务中的日志。

标签: pythonfastapiamazon-cloudwatchlogsdocker-watchtowerwatchtower

解决方案


推荐阅读