@ nblumhardt の post から:
その後、ぶらぶらしている他のロガー設定を削除できます。appsettings.jsonの「Logging」セクション、AddLogging()の場所、Startup.csのILoggerFactoryによる設定は不要です。
コントローラーで_using Serilog;
_およびILogger
の場合、例外が発生します。
_private readonly ILogger _logger;
public CustomersController(ILogger logger)
{
_logger = logger;
}
_
結果:
要求の処理中に未処理の例外が発生しました。
InvalidOperationException: 'Customers.Api.Controllers.CustomersController'をアクティブにしようとしたときに、タイプ 'Serilog.ILogger'のサービスを解決できません。
Startup.ConfigureServices()
メソッドでいくつかの情報をDIに提供する必要がありますか?
私の知る限り、私のプログラムクラスは投稿の指示に従います。
_public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog()
.Build();
}
_
予想されるタイプをILogger logger
からILogger<CustomersController>
ロガーに変更します。
private readonly ILogger _logger;
public CustomersController(ILogger<CustomersController> logger)
{
_logger = logger;
}
ASP.NET CoreのILogger<T>
ではなくSerilog独自のILogger
を引き続き使用する場合は、SerilogロガーをIoCコンテナーに登録することもできます。
https://github.com/nblumhardt/autofac-serilog-integration でこれを行うAutofacの統合があります。他のコンテナーにも統合パッケージがある場合があります。