Serilog未记录适当的RequestId(关联ID)

时间:2019-04-05 05:09:33

标签: asp.net-core serilog

我使用的是Serilog,还有一个名为CorrelationId的ASP.NET Core中间件,它基本上用在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();
}

我正在像这样在控制器中使用记录器:

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" };
}

0 个答案:

没有答案