我们有一个Main()方法的服务,它初始化我们的serilog记录器,如下所示:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.ColoredConsole()
.WriteTo.Seq(ConfigurationManager.AppSettings["SeqServer"], apiKey: ConfigurationManager.AppSettings["SeqApiKey"])
.Enrich.WithProperty("ServiceName", "SomeConsumer")
.CreateLogger();
现在,在另一种方法中,我想在此记录器中附加一个附加属性。我想添加一个.Enrich.WithProperty,因为我喜欢它的日志记录样式
Log.Error("Somelog")
我该怎么做?我只想附加一个带有字符串的新属性。
答案 0 :(得分:4)
在方法CreateLogger
之后,您无法修改创建的记录器实例。如果特定方法或类想要仅在该特定上下文中使用更多变量来丰富日志,则ForContext
是可行的方法。
另一种方法是创建一个在开头设置的动态自定义内容,但这会根据某些逻辑改变其行为。
答案 1 :(得分:0)
我刚尝试过这个,我想它会这样做:
SomeMethod() {
var log = Log.Logger.ForContext("PropertyName", "Some string I need so bad");
log.Debug("Beginning of log with enrichment");
}
这样我可以避免using
块,但是如果有办法修改全局Log.Logger对象,我仍然很好奇