【发布时间】:2022-10-01 16:21:01
【问题描述】:
我在我的 Django 应用程序中添加了日志消息,它成功地将日志消息记录到日志文件中。
现在,我尝试将日志消息添加到 AWS CloudWatch。当我运行应用程序时,它会在 AWS CloudWatch 中创建 log group,但未创建 log stream,也未上传日志消息。
我还在 AWS CloudWatch 中手动创建了log stream,但仍然没有上传日志消息。
我的 Django 应用程序中有以下日志记录配置。
logger_boto3_client = boto3.client(
\"logs\",
aws_access_key_id=CLOUDWATCH_AWS_ID,
aws_secret_access_key=CLOUDWATCH_AWS_KEY,
region_name=AWS_DEFAULT_REGION,
)
LOGGING = {
\'version\': 1,
\'disable_existing_loggers\': False,
\'formatters\': {
\'simple\': {
\'format\': \"[cid: %(cid)s] [%(asctime)s.%(msecs)03d] %(levelname)s [%(name)s:%(lineno)s] [%(funcName)s] %(message)s\",
\'datefmt\': \'%Y-%m-%d %H:%M:%S\',
},
},
\'handlers\': {
\'logger\': {
\'level\': \'DEBUG\',
\'class\': \'logging.handlers.RotatingFileHandler\',
\'filename\': str(BASE_DIR) + \'/logs/test.log\',
\'formatter\': \'simple\',
\'filters\': [\'correlation\'],
},
\'watchtower\': {
\"level\": \"DEBUG\",
\"class\": \"watchtower.CloudWatchLogHandler\",
\"boto3_client\": logger_boto3_client,
\"log_group\": \"DemoLogs2\",
# Different stream for each environment
\"stream_name\": \"logs\",
\"formatter\": \"simple\",
\'filters\': [\'correlation\'],
}
},
\'filters\': {
\'correlation\': {
\'()\': \'cid.log.CidContextFilter\'
},
},
\'loggers\': {
\'root\': {
\'handlers\': [\'logger\', \'watchtower\'],
\'level\': \'DEBUG\',
\'filters\': [\'correlation\'],
\'propagate\': True,
}
}
}
在我的应用程序中,我正在使用这样的记录器,
import logging
logger = logging.getLogger(__name__)
logger.info(\"log message.\")
我的aws cloudwatch 控制台。
-
最可能的原因是分配给您从中获取访问密钥的 AWS 账户的 IAM 权限没有在 CloudWatch Logs 中创建日志流的权限。
-
@MarkB但我可以从aws cloudwatch控制台以IAM用户身份手动创建日志流。在创建此 IAM 用户时,我获得了完整的 cloudwatch 访问权限。
-
AWS_DEFAULT_REGION的值是多少你确定你在寻找正确的区域吗? -
@MarkB 是的。我已经检查过了。我正在查看正确的区域。
标签: django amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights django-logging