c# – .Net core 2.0控制台应用程序的日志记录和配置?
以下代码得到了错误.为.Net Core 2.0控制台应用程序设置日志记录和配置管理的正确方法是什么?
class Program { static void Main(string[] args) { var services = new ServiceCollection(); ConfigureServices(services); var serviceProvider = services.BuildServiceProvider(); var app = serviceProvider.GetService<Application>(); Task.Run(() => app.Run()).Wait(); } private static void ConfigureServices(IServiceCollection services) { ILoggerFactory loggerFactory = new LoggerFactory() .AddConsole() // Error! .AddDebug(); services.AddSingleton(loggerFactory); // Add first my already configured instance services.AddLogging(); // Allow ILogger<T> IConfigurationRoot configuration = GetConfiguration(); services.AddSingleton<IConfigurationRoot>(configuration); // Support typed Options services.AddOptions(); services.Configure<MyOptions>(configuration.GetSection("MyOptions")); // Error! services.AddTransient<Application>(); } private static IConfigurationRoot GetConfiguration() { return new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddXmlFile("App.config",optional: true).Build(); } public class MyOptions { public string Name { get; set; } } public class Application { ILogger _logger; MyOptions _settings; public Application(ILogger<Application> logger,IOptions<MyOptions> settings) { _logger = logger; _settings = settings.Value; } public async Task Run() { try { _logger.LogInformation($"This is a console application for {_settings.Name}"); } catch (Exception ex) { _logger.LogError(ex.ToString()); } } } } 解决方法
它看起来你可能会遗漏几个依赖项:
> 在配置.NET Core可执行文件中的服务方面,Andrew Lock在第一版.NET Core上有一个关于post的主题.其中一些可能已经过时了.NET Core 2最近的到来,但值得一读. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |