为什么我无法从 AWS ECS 上的 .NET Core 应用程序 运行 记录任何内容?

Why can't I log anything from a .NET Core app running on AWS ECS?

我有一个用 .NET Core 3.1 编写的应用程序,已进行码头化并部署到 AWS ECS。我的任务定义配置为将日志发送到 CloudWatch。

无论我做什么,我似乎都无法在我的应用程序中配置日志记录来发送自定义日志。

Program.cs

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging(o =>
                {
                    o.AddAWSProvider();
                    o.SetMinimumLevel(LogLevel.Debug);
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

MyService.cs

[ServiceContract]
    public class HealthCheckService
    {
        private readonly ILogger<HealthCheckService> _logger;

        public HealthCheckService(ILogger<HealthCheckService> logger)
        {
            _logger = logger;
        }

        [OperationContract]
        public string HealthCheck(string input)
        {
            _logger.LogInformation("test from health check");
            return input;
        }
    }

服务端点有效。我可以调用它并得到良好的响应。但在 CloudWatch 中,除了相同的几条基本日志外,我什么也看不到。

日志记录不应该简单到愚蠢吗?或许是吧,我应该是自我感觉很差吧...

  1. 检查您的任务是否有足够的权限写入 CloudWatch 日志。管理您的权限的角色是任务角色 (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)

我正在使用 CloudWatchFullAccess 策略进行测试

  1. 检查您是否在正确的区域中查找。我的配置是这样的(https://github.com/aws/aws-logging-dotnet#aspnet-core-logging)

     "Logging": {
         "IncludeCategory": true,
         "IncludeEventId": false,
         "IncludeException": true,
         "IncludeLogLevel": true,
         "IncludeNewline": true,
         "IncludeScopes": false,
         "LogGroup": "AspNetCore.WebSample",
         "LogLevel": {
           "Default": "Debug",
           "System": "Information",
           "Microsoft": "Information"
         },
        "Region": "eu-central-1"
    }
    

    我的 CloudWatch 日志在欧洲(法兰克福)eu-central-1

没有什么事情是它应该做的那么简单,所以如果事情第一次没有成功,请不要担心。