我发现了两种不同的方法来添加自定义属性到我的Serilog日志消息。
-
通用Microsoft Ilogger "开始范围">
using (_logger.BeginScope(new Dictionary<string, object>() { { "MyVar", var } })) { _logger.LogInformation($"MyVar: {var} - My logging message..."); }
-
系列日志"日志上下文">
using (LogContext.PushProperty("MyVar", var)) { _logger.LogInformation($"MyVar: {var} - My logging message..."); }
工作。然而,现在我的1行日志记录消息已经增加到多行,由于这个使用语句包装,它将在我的代码中无处不在!
如何将日志信息降回1行?
我写一个单独的日志类,实例化里面的日志记录器吗?否则,我将通过依赖注入将日志记录器传递给它?
我应该为ILogger写一个IDisposable适配器类吗?
我可以使用ILoggerFactory吗?
感谢任何帮助:)
我正在使用。net 6.0
-
我认为使用作用域将数据添加到单个日志中并没有多少利润,只需记录它,让结构化日志处理其余的。
-
如果作用域允许,您可以切换到
using
声明,因此您将以2行结束:using var logCtx = LogContext.Push(...); // or _logger.BeginScope _logger.LogInformation(...);