【发布时间】:2022-05-25 21:18:41
【问题描述】:
我有一个ASP .NET Core 应用程序,我正在尝试用一个属性丰富Serilog 记录器,并通过方法调用传递它。
我已经使用Serilog.Context来丰富它,但无济于事,该属性不存在于日志中。
计划
Log.Logger = new LoggerConfiguration().Enrich.FromLogContext()
.WriteTo.File(logpath)
.CreateLogger();
控制器
public class SomeController{
public ILogger logger=Log.ForContext<SomeController>();
private SomeService Service;
public SomeController(SomeService serv)
{
this.service=serv;
}
[HttpGet]
public async Task DoSomething()
{
string corellationId=Guid.NewGuid().ToString();
LogContext.PushProperty("id",corellationId);
service.Run();
}
}
服务
class SomeService
{
private ILogger logger=Log.ForContext<SomeService>();
public void Run()
{
logger.Information("I AM NOT SEEING the ID from upstream !");
}
}
基本上我希望SomeService 的日志在上游提供 id(控制器操作)。
我想要什么:
"[id] [value]"+ "[SomeService log]"
P.S如果重要的话,服务会通过依赖注入来注入。
【问题讨论】:
标签: asp.net-core logging serilog