登录控制台应用程序(.NET Core with DI)

Iva*_*rin 21 c# logging dependency-injection console-application

伙计们。我尝试使用 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();
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*dig 44

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

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如何从另一个类访问记录器?有没有办法通过 DI 提供它? (11认同)