.net core 如何设置DI以注入ILogger<;T>;在具有单个lambda FunctionHandler的lambda函数应用程序中
我和csproj有一个MRE lambda项目.net core 如何设置DI以注入ILogger<;T>;在具有单个lambda FunctionHandler的lambda函数应用程序中,.net-core,dependency-injection,aws-lambda,amazon-cloudwatch,.net Core,Dependency Injection,Aws Lambda,Amazon Cloudwatch,我和csproj有一个MRE lambda项目 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<AWSProjectType>Lambda</AWSProjectType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Amazon.Lambda.Core" Version="1.1.0" />
<PackageReference Include="Amazon.Lambda.Logging.AspNetCore" Version="3.0.1" />
<PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.6" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.6" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.6" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.6" />
</ItemGroup>
</Project>
该服务代码只是尝试使用ILogger登录
using Microsoft.Extensions.Logging;
using System;
namespace AWSLambda3.Services
{
public class ServiceName1 : IServiceName1
{
private readonly ILogger<ServiceName1> _logger;
public ServiceName1(ILogger<ServiceName1> logger)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public void DoSomethingThatLogsUsingLogger()
{
_logger.LogTrace("test LogTrace log string");
_logger.LogDebug("test LogDebug log string");
_logger.LogInformation("test LogInformation log string");
_logger.LogWarning("test LogWarning log string");
_logger.LogError("test LogError log string");
_logger.LogCritical("test LogCritical log string");
}
}
}
使用Microsoft.Extensions.Logging;
使用制度;
名称空间AWSLambda3.Services
{
公共类ServiceName1:IServiceName1
{
专用只读ILogger\u记录器;
公共服务名称1(ILogger记录器)
{
_logger=logger??抛出新的ArgumentNullException(name of(logger));
}
public void dosomethingthatlogusinglogger()
{
_LogTrace(“测试日志跟踪日志字符串”);
_LogDebug(“测试LogDebug日志字符串”);
_logger.LogInformation(“测试LogInformation日志字符串”);
_logger.LogWarning(“测试日志警告日志字符串”);
_logger.LogError(“测试LogError日志字符串”);
_logger.LogCritical(“测试LogCritical日志字符串”);
}
}
}
但是,在将此lambda函数处理程序部署到AWS lambda时,CloudWatch中不会创建任何日志。
我缺少什么?解决方案如下所示 还需要确保已安装此软件包
<PackageReference Include="Amazon.Lambda.Logging.AspNetCore" Version="3.0.1" />
<PackageReference Include="Amazon.Lambda.Logging.AspNetCore" Version="3.0.1" />