.net core 如何设置DI以注入ILogger<;T>;在具有单个lambda FunctionHandler的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

我和csproj有一个MRE lambda项目

<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" />