【发布时间】:2019-03-20 05:05:33
【问题描述】:
我有一个 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);
}
好像有很多代码...
【问题讨论】:
标签: serilog