模拟NLog的记录器并读取记录的消息

2024-02-06

我使用 NLog 4.5.11 进行日志记录,使用 moq 4.10.1 进行模拟。

我有一个中间件,它使用 NLog 将异常详细信息写入日志文件。

我需要在 API 项目中对中间件进行单元测试,并检查记录的消息是否有正确的值。

这就是我声明异常记录器的方式:

private static Logger _exceptionLogger = LogManager.GetLogger("ExceptionLogger");

这就是我在中间件构造函数中初始化 Logmanager 的方式:

 LogManager.LoadConfiguration(String.Concat(Directory.GetCurrentDirectory(), "/nlog.config"));

这就是我记录异常消息的方式:

_exceptionLogger.Error(exceptionMessage);

有什么方法可以做到这一点,而无需实际在文件中写入和读取记录的消息?


建议使用而不是嘲笑记录器内存目标 https://github.com/NLog/NLog/wiki/Memory-target在单元测试中。

例如:

// Arrange
var config = new NLog.Config.LoggingConfiguration();
var memoryTarget = new NLog.Targets.MemoryTarget();
memoryTarget.Layout = "${message}";   // Message format
config.AddRuleForAllLevels(memoryTarget);
LogManager.Configuration = config;

// Act
// Your call

// Assert
var logEvents = target.Logs;
// E.g. contains message in logEvents

PS:请注意,在上面的示例中使用了全局 LogManager,因此您无法并行运行测试。如果您需要并行测试,请创建一个新的日志工厂 https://nlog-project.org/documentation/v4.7.0/html/T_NLog_LogFactory.htm并将 LogFactory 或创建的记录器传递给您的类/方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟NLog的记录器并读取记录的消息 的相关文章

  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 按成员序列化

    我已经实现了template
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • .NET 中是否有内置函数可以对密码进行哈希处理?

    我看到这个问题加密 散列数据库中的纯文本密码 https stackoverflow com questions 287517 encrypting hashing plain text passwords in database 我知道我
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 重载<<的返回值

    include
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 属性的延迟加载

    如何实现对象属性的延迟加载 即如果访问属性但尚不存在 则调用一些应该加载这些属性的对象方法 我的第一次尝试是 def lazyload cls def getattr obj attr if loaded not in obj dict o
  • EF Code First 和 SQL Server 视图

    在 ASP NET MVC3 中 使用 EF Code First 时如何显示 SQL Server 视图中的数据 只需使用视图的名称作为表的名称即可
  • 检测后如何从图像中提取文本区域

    我正在尝试使用 opencv python 从图像中提取所有文本区域 我已成功检测到文本区域 但无法提取它 我提取了文本区域的较小子矩阵 但无法将它们聚合成我们在图像中视为文本区域的更大矩阵 import numpy as np impor
  • 没有实际块的 if 块内的声明是否有效?

    以下代码有效吗 如果有的话 范围是什么x int main if true int x 42 我的直觉告诉我 没有创建任何范围if因为没有实际的块 遵循它 GCC 4 7 2 向我们展示了 虽然代码是valid 的范围x仍然是简单的条件式
  • 我可以将 iPhone/iPad 作为 Eddystone Beacon 进行广播吗?

    我们可以让 iOS 设备充当 iBeacon 发射器 如果我们知道附近的 iBeacon 的 Proximity UUID 我们就可以找到它们 通过Google的Proximity Beacon API 可以配置和注册真正的Beacon硬件
  • 如何在 PostgreSQL 中高效设置减连接表?

    我有以下表格 work units 不言自明 workers 不言自明 skills 如果你想从事每个工作单位 都需要一些技能 每个工人都精通多项技能 work units skills 连接表 workers skills 连接表 工作人
  • 如何在 C# 中锁定整数?

    C 有没有办法锁定整数 整数不能与锁一起使用 因为它们是装箱的 并且仅锁定引用上的锁 场景如下 我有一个基于论坛的网站 具有审核功能 我想要做的是确保在任何给定时间只有一位版主可以审核帖子 为了实现这一点 我想锁定帖子的 ID 到目前为止
  • Memcache 打开后 Magento 会话消失

    我们遇到一个问题 当我们启用 memcache 在 nginx Web 服务器上 时 会话会从 Magento 1 10 中随机消失 我们在 Magento 中设置 cookie 过期时间似乎并不重要 由于某种原因 会话在一小时内的任何随机
  • 带有 mysql (Cloud SQL) 的谷歌应用程序引擎是否支持 GIS?

    我试图在应用程序引擎和云 sql 网站上找到一些关于此的文档 但找不到任何引用它的内容 我知道您可以对其自定义 sql 选项执行 GIS 查询 并且我知道 mysql 支持开箱即用的 GIS 但我也知道它需要一些支持有限的 C 库 更具体地
  • 如何保护我的网站免遭会话固定?

    目前我们面临着会话固定的问题 我们确实有一个受保护的站点 即 HTTPS 并且没有对其进行身份验证 这意味着它具有匿名访问权限 因此 我们面临着黑客的会话固定问题 有人可以帮助和指导吗 您应该在这里找到您需要的信息 OWASP https
  • java.lang.IllegalArgumentException:不是有效的类名:ANDROID NDK javah

    我正在学习在 WINDOWS Eclipse 上的 NDK 中编写 Android 代码 一直在关注 Sylvain Ratabouil 的教程书 所以我在跑步 外部工具 外部工具配置 创建新的程序配置 名称 MyProject javah
  • ADO.NET 数据服务 - 上传文件

    我正在尝试编写 REST Web 服务 通过该服务我们的客户可以将文件上传到我们的文件服务器上 是否有示例或任何有用的链接可供我参考以获取指导 我还没有看到很多使用 ADO NET 数据服务进行 POST 操作的示例 我已使用 POST 将
  • iOS 6 Web Audio API 没有声音

    我很高兴看到 iOS 6 支持 Web Audio API 因为我们制作 HTML5 游戏 但是 我无法让 iOS 6 使用 Web Audio API 播放任何声音 其中的示例在桌面 Chrome 中运行良好 这是一个带有触摸控制并通过
  • 记录 C(或可能是 C++)中 X 宏的使用模式的良好参考资料是什么?

    的基本定义和示例以及一些参考资料X Macros http en wikipedia org wiki C preprocessor X Macros 在此给出C 预处理器的维基百科条目 http en wikipedia org wiki
  • 有效地将矩阵值复制到新矩阵

    是否有一种有效的内置方法可以从一个矩阵复制值 例如 double 到另一个 换句话说 我正在寻找以下函数的替代品 public static double CloneMatrix double aMatrix var newMatrix n
  • AutoCompleteTextView 和 Spinner 使用相同适配器时出现问题

    我有一个 类别 列表 它们作为字符串存储在我的应用程序的 ArrayAdapter 中 这很简单 适配器是活动的一个字段 可以在任何地方访问 它是在 onCreate 期间填充值的 我有一个 条目 对话框 其中包含一个 AutoComple
  • C中循环条件下的逗号运算符

    include
  • 有没有可以浏览您应用程序的 iCloud 数据的工具?

    我正在努力将 iCloud 集成到我的应用程序中 有时会遇到冲突和保存错误的问题 数据存储在云端的事实使得调试问题变得非常困难 据我所知 iCloud 服务器上的数据会镜像到设备上的目录中 有没有任何工具 iOS 或 OSX 应用程序 可以
  • Angular Tour of Heroes:inMemory Web API 的问题

    我正在学习著名的 Angular 教程 英雄之旅 但我在迈出一步时遇到了困难 On the 第六课 HTTP https angular io tutorial toh pt6 我们正在使用一个模拟 API 调用 API 的工具 我想我遵循
  • 模拟NLog的记录器并读取记录的消息

    我使用 NLog 4 5 11 进行日志记录 使用 moq 4 10 1 进行模拟 我有一个中间件 它使用 NLog 将异常详细信息写入日志文件 我需要在 API 项目中对中间件进行单元测试 并检查记录的消息是否有正确的值 这就是我声明异常