gpt4 book ai didi

c# - LibLog - 断言对记录器的调用

转载 作者:太空狗 更新时间:2023-10-29 22:00:11 25 4
gpt4 key购买 nike

使用 LibLog 时,是否可以断言对记录器的调用?鉴于 wiki 列出了以下用法示例:

public class MyClass
{
private static readonly ILog Logger = LogProvider.For<MyClass>();
}

这里的记录器是对消费者隐藏的实现细节,这是使用这个库的最大好处。这样库使用者就不必担心记录器是如何实例化的。查看这篇博文:

http://dhickey.ie/2015/06/capturing-log-output-in-tests-with-xunit2/

似乎添加了很多样板来捕获日志输出,我不完全确定这种方法,因为它在单元测试中也使用了重定向的 Serilog 输出,这对于库来说似乎很奇怪应该只依赖日志记录抽象吗?

目前我能想到的唯一选择是:

注入(inject)记录器 - 这对于库的使用者来说可能会很奇怪,然后每个库都会携带它自己的需要注入(inject)的 ILogger 定义,从而破坏了抽象的优势。

连接到一个真正的日志记录框架 - 将 LibLog 的当前 LogProvider 设置为使用 Log4Net 或类似的,然后以某种方式尝试将模拟/ stub Logger 注入(inject) Log4Net,并通过代理断言调用。

任何相对简单的断言记录器调用的方法都会受到赞赏,但我怀疑并行测试执行会导致问题,即使可以断言上述记录器上的调用?

最佳答案

在几乎所有记录器的日志记录配置中,您都可以配置为在记录失败时抛出异常。

来自 nlog 的样本

<nlog throwExceptions="true">
... your nlog config
</nlog>

但是在 LibLog 创建的抽象中你失去了这个特性

关于c# - LibLog - 断言对记录器的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39272937/

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