Я использую Serilog и ASP.NET Core Middleware под названием CorrelationId
, который в основном меняет TraceIdentifier
на значение, которое он читает в заголовке X-Correlation-ID
.
Я вижу, чтоЗначение HttpContext.TraceIdentifier
изменяется и сохраняется, но Serilog все еще регистрирует значение, которое было там до его изменения.Все остальное работает с Serilog, просто это значение сохраняет свое старое состояние (выглядит примерно так: 0HLLP1A57HHG6:00000001
).
Вот мой Program.cs:
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseUrls("http://0.0.0.0:5000")
.ConfigureLogging((hostingContext, logging) =>
{
var env = hostingContext.HostingEnvironment;
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(hostingContext.Configuration)
.CreateLogger();
Log.Information("Starting for environment {env}", env.EnvironmentName);
})
.Build();
}
IЯ использую регистратор, как это в контроллере:
private readonly ILogger<ValuesController> _loggerService;
public ValuesController(ILogger<ValuesController> logger)
{
_loggerService = logger;
}
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
_loggerService.LogInformation("Test");
return new string[] { "value1", "value2" };
}