gpt4 book ai didi

Serilog:我可以在不添加到消息的情况下添加属性吗?

转载 作者:行者123 更新时间:2023-12-05 02:13:09 25 4
gpt4 key购买 nike

我有一个 WIndows .NET 应用程序,并开始使用 Serilog。我这样初始化它:

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.With(new ThreadIdEnricher())
.Enrich.WithProperty("BuildId", Guid.NewGuid()) // One Guid per run.
.Enrich.FromLogContext()
.WriteTo.RollingFile(@"C:\QRT\Logs\QRT-LOG.txt", LogEventLevel.Verbose)
.WriteTo.Seq("http://localhost:5341" )
.WriteTo.Console(outputTemplate:"{Source} BLAHBLAH {Message:lj}")
.WriteTo.File(new CompactJsonFormatter(), "C:/QRT/Logs/log.json")
.CreateLogger();

我是这样使用它的:

_log = Log.ForContext<GameBase>()
.ForContext("InstrumentID", InstrumentId);
_log.Verbose("This is an order: {orderID} / {order}", order.OrderID, order);

我希望我的 OrderID 显示在消息中,我希望将订单对象作为属性包含在内(这样当我在 Seq 中深入了解此事件时我可以访问它)但我不想消息本身包含对象(太大)。有办法做到这一点吗?

或者我需要这样的东西:

using (var __log = _log.PushProperty("order", order)
{
__log.Verbose ("Hit {orderID}", orderID);
}

代码好像很多...

最佳答案

您可以像添加 InstrumentID 一样将 ForContext 添加到 order 对象的记录器中,它将作为属性包含在内

_log = Log.ForContext<GameBase>()
.ForContext("InstrumentID", InstrumentId)
.ForContext("Order", order, true);

_log.Verbose("This is an order: {orderID}", order.OrderID);

关于Serilog:我可以在不添加到消息的情况下添加属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55101757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com