How to create a LoggerFactory with a ConsoleLoggerProvider?

前端 未结 2 397
野趣味
野趣味 2020-12-09 01:40

The ConsoleLoggerProvider has four constructors:

  1. ConsoleLoggerProvider(IConsoleLoggerSettings)
  2. ConsoleLoggerProvider(IOptionsMonito
相关标签:
2条回答
  • 2020-12-09 01:46

    @0xced thanks for your deconstructed example, since delegates don't work in Powershell this helped me to do the same in Powershell:

    $optionsFactory = [OptionsFactory[ConsoleLoggerOptions]]::new(
        [List[ConfigureNamedOptions[ConsoleLoggerOptions]]]@(
            [ConfigureNamedOptions[ConsoleLoggerOptions]]::new('',$null)
        ),
        [List[IPostConfigureOptions[ConsoleLoggerOptions]]]::new()
    )
    
    $optionsMonitor = [OptionsMonitor[ConsoleLoggerOptions]]::new(
        $optionsFactory,
        [List[IOptionsChangeTokenSource[ConsoleLoggerOptions]]]::new(),
        [OptionsCache[ConsoleLoggerOptions]]::new()
    )
    
    $consoleLoggerProvider = [ConsoleLoggerProvider]$OptionsMonitor
    $consoleLoggerProviderList = [List[ILoggerProvider]]::new()
    $consoleLoggerProviderList.add($consoleLoggerProvider)
    
    $loggerFactory = [LoggerFactory]::new(
        $consoleLoggerProviderList,
        [LoggerFilterOptions]@{
            MinLevel = [LogLevel]::Information
        }
    )
    
    0 讨论(0)
  • 2020-12-09 01:53

    In .NET Core 2.2, you can build an ILoggerFactory without using obsolete methods through Microsoft's dependency injection framework. It's a little less verbose than the version where everything is constructed by hand. Here’s how:

    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Logging;
    
    IServiceCollection serviceCollection = new ServiceCollection();
    serviceCollection.AddLogging(builder => builder
        .AddConsole()
        .AddFilter(level => level >= LogLevel.Information)
    );
    var loggerFactory = serviceCollection.BuildServiceProvider().GetService<ILoggerFactory>();
    

    And in .NET Core 3.0, you can use LoggerFactory.Create:

    var loggerFactory = LoggerFactory.Create(builder => {
            builder.AddFilter("Microsoft", LogLevel.Warning)
                   .AddFilter("System", LogLevel.Warning)
                   .AddFilter("SampleApp.Program", LogLevel.Debug)
                   .AddConsole();
        }
    );
    
    0 讨论(0)
提交回复
热议问题