Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Microsoft.Extensions.Logging の覚え書き

お手軽なんで、Microsoft.Extensions.Logging のコンソール出力を使ってたら、Obsoleteになってたので解決方法のメモ。

元ソースは以下ですが、これが警告になりました。

ILoggerFactory loggerFactory = new LoggerFactory().AddConsole()
ILogger<Program> logger = loggerFactory.CreateLogger<Program>();

ConsoleLoggerExtensions.AddConsole Method (Microsoft.Extensions.Logging) | Microsoft Docs をみても 廃止予定とかいてあります。

代わりに、AddConsole(ILoggingBuilder) を使えとあったのですが、ILoggingBuilderはどこから取ってくるんだろうと思って調べたら、stackoverflowにありました。

stackoverflow.com

2.x 系では、DI使えと。

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

3.0 系では、

var loggerFactory = LoggerFactory.Create(builder => {
        builder.AddFilter("Microsoft", LogLevel.Warning)
               .AddFilter("System", LogLevel.Warning)
               .AddFilter("SampleApp.Program", LogLevel.Debug)
               .AddConsole();
    }
);

と、LogFactory.Createメソッドができるとか。stackoverflowの回答では、それぞれ .NET Core ではと書いてあったけど普通に .NET 4.7系とかからも使えるから、Loggerのバージョンの話じゃないですかね。3.0は現時点でPreviewです。

www.nuget.org