Я хочу получать определенные ключевые биты информации (имя-службы, версия-службы, имя-хоста и т. Д. c), которые регистрируются в каждом сообщении журнала в ASP. Net Базовой службе.
У меня есть следующий код:
public class Program
{
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (host.Services.GetRequiredService<ILogger<Program>>().BeginScope("ServiceName: {0}", "bob-service"))
{
host.Run();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(builder =>
{
builder.AddConsole(o => o.IncludeScopes = true);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Из этого я получаю следующее ведение журнала:
info: Microsoft.Hosting.Lifetime[0]
=> ServiceName: bob-service
Now listening on: http://localhost:5002
info: Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker[102]
=> ConnectionId:0HLSO8706NGBN => RequestPath:/ RequestId:0HLSO8706NGBN:00000001, SpanId:|aa5794ba-408ad22a63064421., TraceId:aa5794ba-408ad22a63064421, ParentId: => Middleware_Scope => /Index
Executed handler method OnGet, returned result .
Обратите внимание, что ServiceName
отображается только в ведении журнала на уровне хоста. В журналировании на уровне запросов не включено.
Существует ли механизм для настройки области действия на каждое сообщение журнала, которое выходит из ASP. Net Core.
Я попытался добавить часть промежуточного программного обеспечения, чтобы сделать это, и это в основном работает, но регистрация не появляется в сообщениях журнала "Microsoft.AspNetCore.Hosting.Diagnostics"
(хотя она появляется на всем остальном, пока как я могу сказать).
app
.Use(async (context, next) =>
{
// Middleware to add scoped values to log messages.
var logger = context.RequestServices.GetRequiredService<ILogger<Startup>>();
using (logger.BeginScope("ServiceName: {0}", "bob-service")))
{
await next();
}
});
EDIT
Даже при использовании промежуточного программного обеспечения, описанного выше, сообщения журнала от регистратора Microsoft.AspNetCore.Hosting.Diagnostics
не содержат полей области действия. Например, обратите внимание, что во втором сообщении журнала сообщение с областью действия Middleware_Scope
не отображается.
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[6]
=> ConnectionId:0HLSOTDVELPJA => RequestPath:/css/site.css RequestId:0HLSOTDVELPJA:00000001, SpanId:|2fbd556d-44cc7c919266ccaf., TraceId:2fbd556d-44cc7c919266ccaf, ParentId: => Middleware_Scope
The file /css/site.css was not modified
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
=> ConnectionId:0HLSOTDVELPJD => RequestPath:/js/site.js RequestId:0HLSOTDVELPJD:00000001, SpanId:|2fbd5570-44cc7c919266ccaf., TraceId:2fbd5570-44cc7c919266ccaf, ParentId:
Request finished in 29.8413ms 304 application/javascript