首页 > 解决方案 > 登录控制台应用程序(带有 DI 的 .NET Core)

问题描述

伙计们。我尝试使用 DI(.NET Core 3.1)将日志记录添加到我的控制台应用程序中,似乎 IoC 容器可以正常工作,将记录器依赖项注入到我的类中,但 LogXXX 方法不会记录到输出。可能是什么原因?也许还有一些额外的配置?

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

namespace DependencyInjection
{
    class Program
    {
        static void Main(string[] args)
        {
            var services = new ServiceCollection();
            ConfigureServices(services);

            var serviceProvider = services.BuildServiceProvider();

            var logger = serviceProvider.GetService<ILogger<Program>>();
            logger.LogInformation("Hello world!");
        }

        static void ConfigureServices(ServiceCollection services)
        {
            services.AddLogging(loggerBuilder =>
            {
                loggerBuilder.ClearProviders();
                loggerBuilder.AddConsole();
            });
        }
    }
}

标签: c#loggingdependency-injectionconsole-application

解决方案


文档有控制台应用程序的当前示例

class Program
{
    static void Main(string[] args)
    {
        using var loggerFactory = LoggerFactory.Create(builder =>
        {
            builder
                .AddFilter("Microsoft", LogLevel.Warning)
                .AddFilter("System", LogLevel.Warning)
                .AddFilter("LoggingConsoleApp.Program", LogLevel.Debug)
                .AddConsole();
        });
        ILogger logger = loggerFactory.CreateLogger<Program>();
        logger.LogInformation("Example log message");
    }
}

当然你需要安装合适的 Nuget 包:

  • Microsoft.Extensions.Logging
  • Microsoft.Extensions.Logging.Console

推荐阅读