【问题标题】:Application logging with object serialization带有对象序列化的应用程序日志记录
【发布时间】:2015-07-24 13:34:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: logging log4net enterprise-library audit-logging


    【解决方案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 问题。

    【讨论】:

    • 从第一眼看,我真的不明白为什么这比普通的 log4net 更好。它是否支持我上面列出的任何内容?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多