У меня ASP. NET Core 3.1 работает в AWS Lambda со следующей настройкой:
<ItemGroup>
<PackageReference Include="Amazon.Lambda.AspNetCoreServer" Version="5.1.1" />
<PackageReference Include="Amazon.Lambda.Logging.AspNetCore" Version="3.0.1" />
<PackageReference Include="AutoMapper" Version="10.0.0" />
<PackageReference Include="AutoMapper.Collection" Version="7.0.0" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.0.1" />
<PackageReference Include="AWS.Logger.AspNetCore" Version="2.2.0" />
<PackageReference Include="AWSSDK.DynamoDBv2" Version="3.3.105.26" />
<PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="3.3.101" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.4" />
...
LambdaEntryPoint.cs:
public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
{
protected override void Init(IWebHostBuilder builder)
{
builder
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
config.AddEnvironmentVariables();
})
.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>()
;
}
}
appSettings. json
{
"Logging": {
"IncludeLogLevel": true,
"IncludeCategory": true,
"IncludeNewline": true,
"IncludeException": true,
"IncludeEventId": false,
"IncludeScopes": false,
"LogLevel": {
"Default": "Information",
"System": "Warning",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Warning"
}
},
"AllowedHosts": "*"
}
Окончательный результат в AWS Журнал CloudWatch выглядит так: введите описание изображения здесь
Есть недопустимые символы [40m[32minfo[39m[22m[49m:
, а также избыточные строки. Это всего лишь образец, но в случае исключений с трассировкой стека журналы становятся довольно длинными и их трудно читать.
Я просто использую ASP. NET Основной интерфейс регистратора по умолчанию от Microsoft ILogger<MySampleController>
а затем позвонил
this.logger.LogInformation($"Mapping done, took {sw.ElapsedMilliseconds} ms.");
Что я делаю не так? Как правильно настроить журнал для AWS Cloudwatch?
Спасибо!