1

我正在实现具有以下要求的 Web 服务应用程序的登录:

  • 日志应该存储在数据库中
  • 日志应该是机器可读的(每一位信息都应该存储在单独的列中)
  • 日志应该是可扩展的(客户端代码可以指定将进入数据库中特定列的信息)
  • 应该能够将大对象从客户端代码传递到数据库(序列化)
  • 不应影响性能(数据库写入操作应在单独的线程中完成)

我知道 log4net 和 similair 解决方案有数据库附加程序。但是延迟数据库写入呢?还有大物体?

其基本用例是能够查看事件并能够在任何执行点获取输入/输出对象。

我觉得我用不同的东西弄乱了应用程序日志记录。有人知道此类产品/架构的正确名称吗?也许有一些通用的解决方案?

4

1 回答 1

1

试试ReflectInsight 。它使用能够添加扩展属性的结构格式。它还有一个 Db writer 侦听器,或者您可以创建自己的侦听器。

编辑:

  1. 日志应该存储在数据库中(是的,你可以使用他们的 DB Listener)
  2. 日志应该是机器可读的(每一位信息都应该存储在单独的列中)(是的,每条消息都有存储的标准属性,另外您可以使用扩展属性定义自己的属性,这些属性也存储到数据库中和其他听众,如现场观众等)
  3. 日志应该是可扩展的(客户端代码可以指定将进入数据库中特定列的信息)应该能够将大对象从客户端代码传递到数据库(序列化)(是的,这是开箱即用的。您可以配置您想要的属性通过简单的配置存储在数据库中。自定义对象在日志中自动序列化(或在您的情况下为数据库),因为 RI 使用结构格式进行日志记录)
  4. 不应影响性能(数据库写入操作应在单独的线程中完成)(是的。所有日志记录活动都通过单独的工作线程发送到侦听器,以免影响主机应用程序的性能)
  5. 单独的 Live Viewer 可以接收 80,000 条消息/秒
  6. 实时内存占用很小,因为大多数消息都缓存在硬盘上
  7. 具有自动保存/自动清除功能。
  8. 可以轻松使用 NLog、Log4net、EntLib、Common Logging 框架映射到 RI 的框架(但是,您将失去记录数据集、集合等丰富细节的能力)。

在此处输入图像描述

免责声明:我不直接为 ReflectSoftware 工作,但我是帮助构建 ReflectInsight 的主要开发人员之一。我的主要目标是帮助任何人满足他们的日志框架需求,并且只回应适用于这方面的 stackoverflow 问题。

于 2015-05-13T12:53:39.027 回答