【发布时间】:2021-01-08 11:40:50
【问题描述】:
我将在 .net 标准 2.0 库中实现 Serilog。 我正在寻找一种方法来选择每个日志行应该使用哪个接收器。
假设我们在配置(控制台和文件)中定义了 2 个接收器:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.File("c:\\temp\\SerilogTets.txt")
.CreateLogger();
在此之后,我们将编写一条日志规则:
Log.Information("Hello, world!"); //<- how can we define which sink we want to use
我正在寻找一种方法来定义应该为哪些接收器记录这些行:
- 控制台和文件
- 仅限控制台
- 仅文件
不依赖于它是什么日志级别。
提前谢谢你!
亲切的问候, 库尔特
【问题讨论】:
-
您可以通过在配置中指定过滤条件来做到这一点。应用程序代码不应该对接收器有任何了解。这违背了使用日志库的初衷——将应用程序代码与日志接收器分离。
-
此外,如果您不解释选择一个或另一个水槽的标准是什么,就无法告诉您如何选择水槽。
-
@PanagiotisKanavos 说了什么,请参阅stackoverflow.com/questions/46516359/…
-
感谢您的快速回复。主要原因是:出于安全原因,我们确实只想将数据记录到日志文件中。其他日志信息可能会记录到应用程序洞察中。更重要的是,我们希望能够选择我们想要推动应用洞察力和不推动什么。
-
这就是记录器配置中的过滤功能。您可以按类别和额外的上下文属性指定过滤器
标签: c# .net-standard serilog sink