为什么我无法从 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 中,除了相同的几条基本日志外,我什么也看不到。
日志记录不应该简单到愚蠢吗?或许是吧,我应该是自我感觉很差吧...
- 检查您的任务是否有足够的权限写入 CloudWatch 日志。管理您的权限的角色是任务角色 (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)
我正在使用 CloudWatchFullAccess 策略进行测试
检查您是否在正确的区域中查找。我的配置是这样的(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
没有什么事情是它应该做的那么简单,所以如果事情第一次没有成功,请不要担心。
我有一个用 .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 中,除了相同的几条基本日志外,我什么也看不到。
日志记录不应该简单到愚蠢吗?或许是吧,我应该是自我感觉很差吧...
- 检查您的任务是否有足够的权限写入 CloudWatch 日志。管理您的权限的角色是任务角色 (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)
我正在使用 CloudWatchFullAccess 策略进行测试
检查您是否在正确的区域中查找。我的配置是这样的(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
没有什么事情是它应该做的那么简单,所以如果事情第一次没有成功,请不要担心。