I read some posts here on SO regarding this issue but they don't help. I got an error of ambiguous refrence. According to this article: Use Serilog with Microsoft.Extensions.Logging.ILogger I should add .UseSerilog()
to builder. I did so but still have a reference clash. I use .Net Core 5.0
I installed Serilog and Miscrosoft extensions packages:
<PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" />
<PackageReference Include="Serilog" Version="2.12.0" />
<PackageReference Include="Serilog.AspNetCore" Version="6.1.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.4.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
Program.cs
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(config)
.CreateLogger();
var host = CreateHostBuilder(args).Build();
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog();
}
I also added dependency:
services.AddSingleton(Log.Logger);
And in controller I got ILogger<CommissionController>
underlined with this ambiguous error:
public class CommissionController : ControllerBase
{
private readonly IMediator _mediator;
private readonly ILogger _logger;
public CommissionController(IMediator mediator, ILogger<CommissionController> logger)
{
_mediator = mediator;
_logger = logger;
}
....