目前,我正在编写ASP.NET 6 Web,作为一个记录器,我们使用Serilog记录所有必要的云监视细节,并且它运行良好。现在,我需要将诸如AWS错误之类的库日志添加到cloudwatch中。目前在配置文件中有一个选项,但它只将日志保存为一个文件,这将导致设备上留下的空间为:和文件中的详细信息没有出现在cloudwatch日志上。
这是我使用的应用程序数据,
"Serilog": {
"Using": [ "AWS.Logger.SeriLog", "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"MinimumLevel": "Debug",
"WriteTo": [
{ "Name": "AWSSeriLog" },
{ "Name": "Console" },
{
"Name": "File",
"Args": {
"path": "Logs/webapi-.txt",
"rollingInterval": "Day"
}
}
],
"Region": "eu-west-2",
"LogGroup": "/development/serilog",
"LibraryLogFileName": "Logs/serilog-aws-errors.txt"
}
我需要知道有一种方法可以在serilog-aws-errors.txt中将细节记录到或S3桶中。
发布于 2022-08-15 16:33:43
这在很大程度上取决于您在AWS中试图部署服务的位置。在ECS或Fargate中,您可以直接登录到控制台。这将是容器定义的片段:
"containerDefinitions": [
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/dev/ecs/my-api-logs-here",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
},
有了上面的配置,您只需要Serilog.Sinks.Console
,所有东西都会在没有特殊AWS接收器的情况下进行日志记录。若要写入控制台,只需使用
loggerConfiguration.WriteTo.Async(a =>
{
a.Console(new JsonFormatter());
});
当部署到Fargate或ECS时,这些控制台日志将出现在您的CloudWatch日志中。不需要额外的水槽。Lambda日志也有类似的设置。有关更多细节,请参见:https://docs.aws.amazon.com/lambda/latest/dg/csharp-logging.html。
如果您想使用Serilog.Sinks.AwsCloudWatch
,它确实有一些不错的特性,但是设置有点不同。您可能根本不想登录到控制台或文件接收器。相反,您只需直接登录到CloudWatch。您会想要根据他们在Github:https://github.com/Cimpress-MCP/serilog-sinks-awscloudwatch上的说明来设置它。您可以在本地环境中启动并运行该程序,然后将应用程序设置设置为只有在部署到AWS时才能运行,并且在本地仍然使用控制台或文件设置。
var options = new CloudWatchSinkOptions
{
// the name of the CloudWatch Log group for logging
LogGroupName = logGroupName,
// the main formatter of the log event
TextFormatter = formatter,
// other defaults defaults
MinimumLogEventLevel = LogEventLevel.Information,
BatchSizeLimit = 100,
QueueSizeLimit = 10000,
Period = TimeSpan.FromSeconds(10),
CreateLogGroup = true,
LogStreamNameProvider = new DefaultLogStreamProvider(),
RetryAttempts = 5
};
// setup AWS CloudWatch client
var client = new AmazonCloudWatchLogsClient(myAwsRegion);
// Attach the sink to the logger configuration
Log.Logger = new LoggerConfiguration()
.WriteTo.AmazonCloudWatch(options, client)
.CreateLogger();
https://stackoverflow.com/questions/73360769
复制相似问题