首页 > 解决方案 > 在 .NET Framework 4.6 控制台应用程序中的控制台中写入日志

问题描述

我尝试了很多方法,但无法在 .NET Framework 4.6 控制台应用程序的控制台中写入日志。我在 Stackoverflow 上进行了搜索,发现了 2 个可能的解决方案,但都不起作用:

  1. 在 ConfigureDI 中注册为

    services.AddLogging(configure => configure.AddConsole());

这第一个可能的解决方案我什至无法测试

ILoggingBuilder 不包含 AddConsole [...]

  1. 在 ConfigureDI 中注册为

    services.AddSingleton<ILoggerFactory, LoggerFactory>(); services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));

我将 ILogger 与依赖注入一起使用,如下所示:

public class MyApplication
    {
        private readonly ILogger<MyService> _logger;
        public MyApplication(ILogger<MyService> logger)
        {
            _logger = logger;

        }
        public void Run()
        {    
            _logger.LogInformation("Application Started at {dateTime}", DateTime.UtcNow);             
             //...
        }
    }

我的 Program.cs 是这样的:

public static class Program
    {

        public static void Main(string[] args)
        {
            var services = new ServiceCollection();

            DependencyInjectionConfiguration.ConfigureDI(services);

            var serviceProvider = services.BuildServiceProvider();

            var receiver = serviceProvider.GetService<IReceiver>();

            receiver.MyServiceMethod();
        }
    }

我的 ConfigureDI 方法是这样的:

public static class DependencyInjectionConfiguration
    {
        public static void ConfigureDI(IServiceCollection services)
        {
            services.AddScoped<IReceiver, Receiver>();
            services.AddHttpClient<MyClient>();
            services.AddScoped<HelperXml>();
            //services.AddSingleton<ILoggerFactory, LoggerFactory>();
            //services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
            //services.AddLogging(configure => configure.AddConsole());
        }
    }

有人知道这里有什么问题吗?另外:在txt文件上写也不错...

谢谢

标签: loggingdependency-injection.net-4.6

解决方案


如果您希望使用 ILogger(Microsoft.Extensions.Logging 的一部分),则需要以.NET Standard框架为目标。


推荐阅读