tagprovider
[logproperties] 与 [logpropertyignore] 如果用在dto不存在任何问题,如果用在domain实体上,可能有点混乱。
您可能不希望因日志记录问题而使您的域模型变得混乱。对于这种情况,可以使用[tagprovider]属性来丰富日志。
我们仍然使用前面用的network实体,这次它不再使用[logpropertyignore]属性:
相反,我们定义了一个专用的“tagprovider”实现。
不需要实现接口或任何类,只需要正确的方法格式。
下面是我们给network对象的标签提供程序,我们只记录字段ipaddres字段,如下所示:
定义标签提供程序后,我们现在可以在日志记录方法中使用它。
将属性替换[logproperties]为[tagprovider]如下所示的属性:
按正常方式调用即可,可以看到network.ipaddress已经记录到日志的state属性中。
enricher
microsoft.extensions.telemetry包可以像serilog一样丰富日志。首先添加nuget包
首先使用方法iloggingbuilder.enableenrichment()启用全局丰富,并通过addprocesslogenricher将进程的日志信息添加到日志中。
也可以通过metadata自定义使用的字段
这些内置的丰富器很方便,但也可以创建自定义的实现。
自定义logenricher
您可以通过从或接口istaticlogenricher和ilogenricher派生创建自己的丰富器
- istaticlogenricher: istaticlogenricher—是全局的enricher,如果日志在整个声明周期中不变则可将其标签添加到记录器中。
- ilogenricher- 每次写入日志时都会调用丰富器,这对于可能更改的值非常有用。
我们将创建一个简单的istaticlogenricher,将当前计算机名称添加到日志中,另外创建一个ilogenricher,将当前用户id添加到日志中。
到此这篇关于.net core 使用 tagprovider 与 enricher 丰富日志的文章就介绍到这了,更多相关.net core 使用 tagprovider 与 enricher内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论