AWS.Logger.SeriLog 3.4.3
Prefix Reserved
dotnet add package AWS.Logger.SeriLog --version 3.4.3
NuGet\Install-Package AWS.Logger.SeriLog -Version 3.4.3
<PackageReference Include="AWS.Logger.SeriLog" Version="3.4.3" />
paket add AWS.Logger.SeriLog --version 3.4.3
#r "nuget: AWS.Logger.SeriLog, 3.4.3"
// Install AWS.Logger.SeriLog as a Cake Addin #addin nuget:?package=AWS.Logger.SeriLog&version=3.4.3 // Install AWS.Logger.SeriLog as a Cake Tool #tool nuget:?package=AWS.Logger.SeriLog&version=3.4.3
AWS Logging .NET
此仓库包含与 AWS 集成的流行 .NET 日志框架插件。这些插件使用 Amazon CloudWatch Logs 服务将日志数据写入配置的日志组。可以使用 AWS CloudWatch 控制台 查看和搜索日志。
要查看发布历史,请查看 发布变更日志
AWS Lambda
这些包使用后台线程将日志消息批处理到队列中,并将消息发送到 CloudWatch Logs。使用后台线程意味着在 AWS Lambda 中使用时,不保证消息能被成功传递。原因是后台线程在 Lambda 事件处理完毕后将被冻结,如果不一段时间内收到更多的 Lambda 事件,则可能永远不会被解冻。
在使用 Lambda 时,建议使用 ILambdaContext.Logger.LogLine
或 Amazon.Lambda.Logging.AspNetCore 包。
需要 IAM 权限
无论使用何种框架,以下权限必须允许(通过 IAM),以允许提供的 AWS 凭据。
logs:CreateLogGroup
logs:CreateLogStream
logs:PutLogEvents
logs:DescribeLogGroups
在设置凭据时推荐给予最小权限访问。您可以通过在创建策略时引用其 ARN 来限制权限范围以特定的资源(例如日志流)来进一步减少访问权限。
有关更多信息及示例 JSON 策略模板,请参阅 AWS 开发者博客上的 Amazon CloudWatch Logs and .NET Logging Frameworks。
可选 IAM 权限
以下 IAM 权限为可选的,具体取决于日志记录器配置的功能。
功能 | 为功能配置 IAM 权限 | 配置设置 |
---|---|---|
设置新的日志组保留策略 | logs:PutRetentionPolicy |
NewLogGroupRetentionInDays |
配置日志流名称
在以下版本之前,这些库遵循 CloudWatch Logs 的最佳实践,即生成日志流名称。该名称可以通过使用 LogStreamNameSuffix
和 LogStreamNamePrefix
配置属性添加后缀或前缀来自定义。
生成名称确保应用程序中的每个进程都有自己的日志流进行写入。否则,当进程写入相同的流时,进程内部维持的 sequenceToken
会脱节。这会引发错误和重试,造成性能问题。
2023 年 CloudWatch Logs 移除了 SequenceToken 要求,这消除了在多个日志流中分拆日志接收并在多个客户端间协调序列令牌的需求。
以下版本引入了一个新的 LogStreamName
设置,可以用来指定完整的日志流名称。当设置此配置时,LogStreamNamePrefix
和 LogStreamNameSuffix
将被忽略。
- AWS.Logger.Nlog - 3.3.0
- AWS.Logger.Log4net - 3.5.0
- AWS.Logger.AspNetCore - 3.5.0
- AWS.Logger.SeriLog - 3.4.0
设置新的日志组保留策略
这些库支持为它们创建的任何 CloudWatch Log Groups 设置 日志保留策略。此功能通过使用 NewLogGroupRetentionInDays 配置属性启用。必须不将 DisableLogGroupCreation 配置属性设置为 true。以这种方式配置的保留策略只应用于由这些库直接创建的 新 日志组。
注意,任何不是 CloudWatch 支持 的 NewLogGroupRetentionInDays 值(如下所示)的配置错误将导致在应用策略时产生非致命错误。虽然应用程序和日志记录将继续进行,但没有应用保留策略。
null, 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653
支持的日志记录框架
NLog
- NuGet 包:AWS.Logger.Nlog
NLog 使用目标来接收日志消息。可以通过配置文件或代码来配置目标。NLog 将自动搜索默认的配置文件 NLog.config。以下是一个配置 AWS 区域和 CloudWatch 日志日志组的示例配置文件。
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
throwConfigExceptions="true">
<extensions>
<add assembly="NLog.AWS.Logger" />
</extensions>
<targets>
<target name="aws" type="AWSTarget" logGroup="NLog.ConfigExample" region="us-east-1"/>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="aws" />
</rules>
</nlog>
AWS 凭据将使用标准的 AWS SDK for .NET 凭据搜索路径查找。在这种情况下,它将查找名为默认配置文件的配置文件,搜索环境变量或在 EC2 实例上查找实例配置文件。要使用特定的 AWS 凭据配置文件,请使用目标上的 profile 属性。
以下是通过代码执行相同配置的示例。
var config = new LoggingConfiguration();
var awsTarget = new AWSTarget()
{
LogGroup = "NLog.ProgrammaticConfigurationExample",
Region = "us-east-1"
};
config.AddTarget("aws", awsTarget);
config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, awsTarget));
LogManager.Configuration = config;
查看 NLog 样例 以获取如何与 AWS 和 NLog 一起使用的示例。
Apache log4net
- NuGet 包: AWS.Logger.Log4net
Log4net 配置接受日志消息的附件。附件可以通过配置文件或代码来配置。要使用配置文件,请将文件添加到您的项目中。该文件可以命名任何内容,但为了这个示例,将其命名为 log4net.config。确保将 复制到输出目录 设置为复制。以下是一个设置 CloudWatch Log 日志组和 AWS 区域的示例配置文件。
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="AWS" type="AWS.Logger.Log4net.AWSAppender,AWS.Logger.Log4net">
<LogGroup>Log4net.ConfigExample</LogGroup>
<Region>us-east-1</Region>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="AWS" />
</root>
</log4net>
AWS 凭据将通过标准的 AWS SDK for .NET 凭据搜索路径查找。在这种情况下,它将查找名为默认配置文件的配置文件,搜索环境变量或在 EC2 实例上查找实例配置文件。要使用特定的 AWS 凭据配置文件,请在 appender 节点下添加一个 Profile。
在应用启动时添加以下代码,以便 log4net 读取配置文件。
// log4net is configured in the log4net.config file which adds the AWS appender.
XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
以下是通过代码执行相同配置的示例。
static void ConfigureLog4net()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%-4timestamp [%thread] %-5level %logger %ndc - %message%newline";
patternLayout.ActivateOptions();
AWSAppender appender = new AWSAppender();
appender.Layout = patternLayout;
// Set log group and region. Assume credentials will be found using the default profile or IAM credentials.
appender.LogGroup = "Log4net.ProgrammaticConfigurationExample";
appender.Region = "us-east-1";
appender.ActivateOptions();
hierarchy.Root.AddAppender(appender);
hierarchy.Root.Level = Level.All;
hierarchy.Configured = true;
}
查看 Log4net 样例 以获取如何与 AWS 和 log4net 一起使用的示例。
ASP.NET Core 日志记录
- NuGet 包: AWS.Logger.AspNetCore
ASP.NET Core 引入了一个新的 日志框架,该框架已配置将日志发送到目的地。AWS.Logger.AspNetCore NuGet 包提供了一个日志提供程序,它将 CloudWatch 日志作为日志的目的地。
注意:从 AWS.Logger.AspNetCore 的 2.0.0 版本开始,此库针对 netstandard2.0,并且依赖项已升级到 ASP.NET Core 2.1 版本。对于 Microsoft 已宣布停止支持的较早版本的 .NET Core,请使用 2.0.0 版本之前的版本。
此存储库中的 WebSample 展示了如何配置此提供程序。
配置设置在 appsettings.json 文件中。在 2.0.0 版本之前,使用 AWS.Logging
作为配置节根。从 2.0.0 版本开始,库已切换到使用标准的 Logging
配置节根。为了向后兼容,如果 Logging
节不包含 LogGroup
,则库将回退到 AWS.Logging
。
"Logging": {
"Region": "us-east-1",
"LogGroup": "AspNetCore.WebSample",
"IncludeLogLevel": true,
"IncludeCategory": true,
"IncludeNewline": true,
"IncludeException": true,
"IncludeEventId": false,
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
在典型的 ASP.NET Core 应用程序中,Program.cs
文件包含一个 CreateWebHostBuilder
方法。要包含 AWS.Logger.AspNetCore,请添加对 ConfigureLogging
的调用,并将 Action
传递到 ConfigureLogging 中调用 AddAWSProvider
。这将查找配置信息从添加到依赖注入系统的 IConfiguration。
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.AddAWSProvider();
// When you need logging below set the minimum level. Otherwise the logging framework will default to Informational for external providers.
logging.SetMinimumLevel(LogLevel.Debug);
})
.UseStartup<Startup>();
Serilog
- NuGet 包: AWS.Logger.SeriLog
Serilog 可以配置为通过配置文件或代码接收日志消息的接收器。要使用 Serilog 的配置文件,请按照 此处 的说明安装所需的扩展和 NuGet 包。在 json 文件中,确保 AWS.Logger.SeriLog 在 Using 数组中。在 Serilog 节下设置 LogGroup 和 Region,并在 WriteTo 节下添加 AWSSeriLog 作为接收器。以下是一个示例。
{
"Serilog": {
"Using": [
"AWS.Logger.SeriLog"
],
"LogGroup": "Serilog.ConfigExample",
"Region": "us-east-1",
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "AWSSeriLog"
}
]
}
}
将以下代码添加到配置日志记录器以从JSON文件中读取。
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
AWS凭据将通过标准的.NET凭据搜索路径查找。它将搜索名为default的配置文件、环境变量或EC2实例上的实例配置文件。为了使用非默认配置文件,请在
以下是使用代码完成与上面相同的配置的示例。可以通过使用WriteTo方法将AWS接收器添加到日志记录器。
AWSLoggerConfig configuration = new AWSLoggerConfig("Serilog.ConfigExample");
configuration.Region = "us-east-1";
var logger = new LoggerConfiguration()
.WriteTo.AWSSeriLog(configuration)
.CreateLogger();
查阅
产品 | 版本 兼容的以及额外计算的目标框架版本。 |
---|---|
.NET | net5.0已被计算。 net5.0-windows已被计算。 net6.0已被计算。 net6.0-android已被计算。 net6.0-ios已被计算。 net6.0-maccatalyst已被计算。 net6.0-macos已被计算。 net6.0-tvos已被计算。 net6.0-windows已被计算。 net7.0已被计算。 net7.0-android已被计算。 net7.0-ios已被计算。 net7.0-maccatalyst已被计算。 net7.0-macos已被计算。 net7.0-tvos已被计算。 net7.0-windows已被计算。 net8.0已被计算。 net8.0-android已被计算。 net8.0-browser已被计算。 net8.0-ios已被计算。 net8.0-maccatalyst已被计算。 net8.0-macos已被计算。 net8.0-tvos已被计算。 net8.0-windows已被计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET标准 | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET Framework | net45 兼容。 net451 已计算。 net452 已计算。 net46 兼容。 net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NET Framework 4.5
- AWS.Logger.Core (>= 3.3.3)
- Microsoft.Extensions.Configuration.Abstractions (>= 1.0.0)
- Serilog (>= 2.6.0)
-
.NET Framework 4.6
- AWS.Logger.Core (>= 3.3.3)
- Microsoft.Extensions.Configuration.Abstractions (>= 1.0.0)
- Serilog (>= 2.6.0)
-
.NET Standard 2.0
- AWS.Logger.Core (>= 3.3.3)
- Microsoft.Extensions.Configuration.Abstractions (>= 1.0.0)
- Serilog (>= 2.6.0)
NuGet 包 (11)
显示依赖AWS.Logger.SeriLog的Top 5 NuGet包
包 | 下载 |
---|---|
Lurgle.Logging
日志库,加速项目使用Serilog启动。支持输出到控制台、文件、事件日志、Seq和Splunk! |
|
MitLogging
包描述 |
|
Preqin.Excel.Export3
包描述 |
|
IL.Echannel.AWSCloudWatchSerilogElk
本实用工具帮助在AWS CloudWatch中使用ELK记录日志。 |
|
MitLogger
包描述 |
GitHub仓库 (2)
显示最热门的前2个依赖AWS.Logger.SeriLog的GitHub仓库
仓库 | 星标 |
---|---|
fullstackhero/dotnet-starter-kit
生产级云就绪.NET 8启动套件(Web API + Blazor客户端)具有多租户支持,以及节省大约200+开发小时数的干净/模块化架构!一切应有尽有。
|
|
aws/aws-logging-dotnet
.NET库,用于将Amazon CloudWatch日志与流行的.NET日志库集成
|
版本 | 下载 | 最后更新 |
---|---|---|
3.4.3 | 100,205 | 5/22/2024 |
3.4.2 | 11,492 | 5/13/2024 |
3.4.1 | 35,011 | 4/22/2024 |
3.4.0 | 27,859 | 4/9/2024 |
3.3.0 | 527,732 | 8/23/2023 |
3.2.0 | 1,610,859 | 3/21/2022 |
3.1.1 | 677,918 | 6/24/2021 |
3.1.0 | 67,189 | 5/21/2021 |
3.0.0 | 112,166 | 4/2/2021 |
2.1.0 | 51,354 | 3/25/2021 |
2.0.1 | 181,591 | 12/9/2020 |
2.0.0 | 76,453 | 10/7/2020 |
1.5.2 | 346,730 | 3/4/2020 |
1.5.1 | 183,964 | 10/17/2019 |
1.4.0 | 93,916 | 6/27/2019 |
1.2.1 | 66,764 | 12/6/2018 |
1.2.0 | 761 | 12/6/2018 |
1.1.0 | 49,590 | 7/24/2018 |
1.0.3 | 13,452 | 3/20/2018 |
1.0.2 | 1,228 | 2/23/2018 |
1.0.1 | 1,184 | 1/4/2018 |
1.0.0 | 3,673 | 12/11/2017 |