gpt4 book ai didi

serilog - 类的自定义格式

转载 作者:行者123 更新时间:2023-12-02 00:50:42 26 4
gpt4 key购买 nike

我目前正在使用 Serilog,我希望能够将一个类传递给记录器,并让它在输出到文本文件之前以自定义格式记录。有点类似于IFormatProvider .我还找到了 ITextFormatter 但我不确定这是否是正确的实现方式。我想要一个定制水槽吗?

最佳答案

对于基本类型,Serilog supports IFormatProvider直接。

然而,大多数用户定义的引用类型不会被 Serilog 直接传递给接收器。这是因为接收器通常是异步操作的,而 Serilog 不能假定任意用户定义的类型都是线程安全的。

为了使用 IFormatProvider,您可以通过将类型的值捕获为“标量”来规避此问题:

.Destructure.AsScalar<SomeClass>()

或者,您可以在记录时将类“解构”为您想要的任何辅助表示:

.Destructure.ByTransforming<SomeClass>(sc => Display(sc))

要使此 (ByTransforming()) 起作用,您需要在记录对象时使用 @ 选择加入:

Log.Information("Hello {@Something}", new SomeClass());

最简单的是,您也可以在类本身中覆盖 ToString()

关于serilog - 类的自定义格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40206289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com