【发布时间】:2020-07-15 07:57:34
【问题描述】:
我正在开发一个使用 Log4Net 的 C# WebAPI (.Net Framework 4.8) 项目。目前这有一个滚动文件和 LogEntries 附加程序(两者都有效)。我的客户希望包含与 AWS Cloudwatch 的集成,以便逐步淘汰 LogEntries 并将日志记录带入他的 AWS 生态系统。
我添加了以下 NuGet 包 AWSSDK.CloudWatchLogs 和 AWS.Logger.Log4net 以及其他依赖项。我还在我的App.config 中添加了以下内容:
<appender name="AWS" type="AWS.Logger.Log4net.AWSAppender,AWS.Logger.Log4net">
<LogGroup>my_app</LogGroup>
<Region>eu-west-1</Region>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
</layout>
<LibraryLogFileName>c:\logs\my_app_awslog.txt</LibraryLogFileName>
</appender>
我无权访问托管此应用程序的服务器,但我有权使用此documentation 作为指南将凭据文件放置在默认位置。另外,据我所知,如果凭据文件不正确,NuGet 库会按照上述规定将错误记录到c:\logs\my_app_awslog.txt。
这是我的问题:
- 没有日志到达 AWS Cloudwatch。
- 没有从 Cloudwatch NuGet 库到
c:\logs\my_app_awslog.txt位置的错误日志。 - 日志仍在 LogEntries 正常工作,因此 Log4Net 集成仍然正常。
我不知道需要在 AWS 中进行任何更改/设置。我错过了什么吗?
非常感谢!
【问题讨论】:
-
如果应用程序托管在 AWS EC2 实例上,那么与实例关联的角色应该有权写入 cloudwatch 日志。如果它不是 EC2 服务器,则使用的凭据应具有写入 cloudwatch 日志的权限。我建议确认必要的权限是否到位。
-
@ChetanRanpariya 我被告知与 EC2 实例相关联的角色有权写入 cloudwatch 日志。
标签: c# amazon-web-services log4net amazon-cloudwatchlogs