Ang*_*ker 4 logging amazon-web-services amazon-elastic-beanstalk asp.net-core
具体来说,我感兴趣的是能够通过他们的界面看到输出.例如,无论如何获取ILogger.LogFoo方法或Console.WriteLine显示在" 监视"或" 日志"选项卡中或其他任何位置?
我正试图远离专有的AWS方式来查看输出,以防应用程序需要在其他地方部署.
Mar*_*ery 12
没有办法让基于Windows的应用程序的日志显示在Elastic Beanstalk界面中.几个月前我特意请求AWS支持,并收到以下回复,告诉我使用CloudWatch:
你好,
beanstalk日志使用它自己的逻辑来收集日志.在它的Linux的verison,可以简单地将文件添加到记录的路径,但在Windows日志被单独收集,因为它们使用了不同类型的日志记录司机的收集日志,因此它不可能简单地将文件添加到路径并看到它们显示在beanstalk日志记录中.
你可以做什么,而不是使用内置的beanstalk日志记录,而是使用cloudformation [sic]日志.
http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html
有了这个,您应该能够设置一个记录器,允许您直接将日志发送到亚马逊云观察日志.
最好的祝福,
以利亚 亚马逊网络服务
谨慎的做法是,您希望避免将所有日志记录代码紧密耦合 - 正如您在问题中所说的那样 - "专有的AWS查看输出方式".但是,通过将ASP.NET Core框架的标准日志记录与将ASP.NET Core的内置记录器与CloudWatch集成的日志记录提供程序一起使用,可以将CloudWatch与松散耦合一起使用.AWS.Logger.AspNetCore
基于一目了然过犯,我添加了这个功能,我目前的公司的代码库,我想,为了得到它的工作,我不得不做如下修改,主要是在基于ASP.NET官方核心CloudWatch的集成例如HTTPS ://github.com/aws/aws-logging-dotnet/tree/master/samples/AspNetCore/WebSample:
跑
Install-Package AWS.Logger.Core
Install-Package AWS.Logger.AspNetCore
Run Code Online (Sandbox Code Playgroud)加
loggerFactory.AddAWSProvider(Configuration.GetAWSLoggingConfigSection());
Run Code Online (Sandbox Code Playgroud)
到我的应用程序
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
Run Code Online (Sandbox Code Playgroud)
方法Startup.cs(模板应用程序包含调用loggerFactory.AddConsole(Configuration.GetSection("Logging"));和的相同位置)loggerFactory.AddDebug();.
AWS.Logging在我的appsettings.config文件的根目录中添加一个部分:
{
"AWS.Logging": {
"Region": "us-west-2",
"LogGroup": "put-whatever-name-you-like-here",
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
...
}
Run Code Online (Sandbox Code Playgroud)每在说明http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html#AWSHowTo.cloudwatchlogs.permissions,以创建一个自定义策略https://console.aws.amazon.com/iam/home#/具有以下内容的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:GetLogEvents",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:PutRetentionPolicy"
],
"Resource": [
"arn:aws:logs:us-west-2:*:*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后将其连接到了aws-elasticbeanstalk-ec2-role在https://console.aws.amazon.com/iam/home#/roles/aws-elasticbeanstalk-ec2-role.(请注意,us-west-2在JSON以上是具体到我的应用程序,因为这是它部署在该地区,这aws-elasticbeanstalk-ec2-role是默认的弹性魔豆实例的角色-你可能需要将策略附加到不同的角色,如果你拉扯大具有不同角色的实例.)
完成所有操作后,您ILogger应该登录CloudWatch.如果你去https://console.aws.amazon.com/cloudwatch/home,点击"日志"在侧边栏,然后点击其名称的匹配的日志组LogGroup在你的设置appsettings文件,你应该能够看到你的日志.
| 归档时间: |
|
| 查看次数: |
1850 次 |
| 最近记录: |