Я не могу получить выписки в журнале Seq из моего приложения IIS. net core 2.2 app. Журналы появляются, когда я отлаживаю и запускаю приложение с IISExpres. Однако только журналы RequestLogging отображаются в Seq, когда приложение запускается из пула приложений реального IIS. Я скучаю по своим журналам.
Вот что я сделал:
Установленные пакеты Nuget Serilog, Serilog.Aspnetcore и Serilog.Sinks.Seq.
Удалены все Microsoft.Extensions.Logging и ссылки.
Реализована встроенная конфигурация в Program.cs после примера на странице Serilog.Aspnetcore Github:
public class Program
{
...
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog((hostingContext, loggerConfiguration) =>
loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration)
, preserveStaticLogger: true, writeToProviders: false);
}
Добавлена регистрация запросов в Startup.cs:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
....
app.UseHttpsRedirection();
app.UseSerilogRequestLogging();
app.UseMvc();
}
Настроил Serilog в настройках приложения. json, поэтому apiKey и Seq serverUrl настраиваются при развертывании с помощью Azure DevOps для сред разработки, тестирования и производства:
{
"Serilog": {
"Using": [ "Serilog.Sinks.Seq" ],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext" ],
"WriteTo": [
{
"Name": "Seq",
"Args": {
"apiKey": "iVPcw1...",
"serverUrl": "http://localhost:5341"
}
}
]
},
...
}
Добавлен логгер и инициализация в классах как обычно:
public class SomeService : ISomeService
{
private readonly ILogger logger;
...
public SomeService( ...injections...) {
logger = Log.ForContext<SomeService>();
...
}
...
public async Task ServiceMethod(Data d)
{
logger.Information("ServiceMethod called with {@d}");
}
...
}