【问题标题】:Logging *Business* Events - use logging framework?记录 *Business* 事件 - 使用记录框架?
【发布时间】:2009-10-27 13:55:29
【问题描述】:

我觉得这里有些地方不对劲,所以我想听取社区的意见 - 也许我以错误的方式处理这个问题......

问:是否适合使用传统的基础设施日志框架(如 log4net)来记录业务事件

当我说业务事件时,我的意思是我想要这样的全局日志:

xx:xx Customer A purchased widget B.
xx:xx Widget B was dispatched from warehouse.
xx:xx Customer B payment declined.

大多数传统的基础设施日志框架都有类似这样的事件级别:

FATAL
ERROR
WARN
INFO
DEBUG

当然,这些消息不适合这一点。最好的描述是 INFO,当然这些都是重要事件,INFO 的重要性很低。

我仍然希望将其作为“日志”(例如,我不想每次都从业务对象中提取它)

在我看来我有两个选择:

1) 使用像 log4net 这样的框架并为此定义一个特殊的记录器(并忍受它感觉不对的事实)。

2) 提供不依赖于传统日志服务的执行此操作的服务。

我倾向于 2。其他人在类似情况下做了什么?

谢谢!

【问题讨论】:

    标签: events logging


    【解决方案1】:

    您想要的听起来像是审计服务,而不是日志服务。如果我是对的,您的目标是跟踪这些业务事件以用于历史甚至报告目的。您可以使用审核中的详细信息,因为没有更好的措辞,将责任归咎于系统中发生的事件。

    我可能不会为此目的使用日志系统,例如 log4j。在我们的系统中,审计是作为一项全面服务的一等公民。

    -- 高温下, 尘土飞扬

    【讨论】:

    • 你提到了审计服务,你知道这个审计空间中有什么库/服务相当于log4j吗?或者这是一个人通常自己开发的东西?
    【解决方案2】:

    将记录器留给与程序有关的事情,而不是与业务有关的事情。它只是一个帮助开发者的工具。

    编写您自己的系统来记录业务事件。如果有记录是业务需求,您会想要一些您可以控制的东西,并且您需要使用上面的记录器来跟踪它是如何工作的。

    基本上,在您的问题中排名第二。

    【讨论】:

      【解决方案3】:

      对我而言,业务事件的概念是它在未来的某些业务处理中发挥作用,从实际触发业务操作到简单地用于分析。

      因此,完全不同的 QOS 要求。需要自己的 API。

      最初可能会映射到日志记录,但将来可能会转到可靠的消息传递或数据库。

      【讨论】:

        【解决方案4】:

        这些听起来像是您的客户可能希望从您的应用程序中查询或报告的类型 - 显而易见的选择是数据库。

        特别是,在这种情况下,我觉得传统的日志框架不适合,因为当涉及到您以后可能想要在应用程序中访问的数据时,日志框架允许您做一些没有意义的事情,因为例如,您可能能够根据 app.config 文件更改日志记录的发送位置(如果您尝试从不同位置读取它,这将无济于事)。

        也就是说,如果日志框架允许您完全按照自己的意愿行事,那么仅将日志框架用作您的实现并为您节省工作量并没有什么可耻的:

        class TransactionLogger
        {
            public void Log (Message message)
            {
                MyLoggingFramework.Log(message.string, etc...);
            }
        }
        

        【讨论】:

          【解决方案5】:

          根据我的经验,业务事件包括大量或大量的幕后技术操作,只有某些业务事件对业务很重要。

          这会在尝试使用通用日志记录方法时产生问题,因此一般来说,在我使用过的系统中,两者都会使用。
          技术方面的日志记录和业务事件的业务事件日志记录。

          业务事件日志记录不使用与技术日志记录相同的技术,而是记录到自定义设计的历史记录/审计表(有时这些记录会根据所需的详细信息进行拆分),该表专为每个应用。 (这让审计员和用户感到高兴和高兴。)

          这使得报告和信息管理变得容易,同时明显地稍微扩大了每个规范的范围。

          【讨论】:

            【解决方案6】:

            您可以使用它,但您需要的是业务活动监控和事件处理软件。在我的脑海中,IBM WebSphere Business Monitor 提供了这种能力。它处理 Common Base Event(Web 服务分布式管理 Web 事件格式标准的 IBM 实现),然后获取该数据并创建业务活动仪表板。

            【讨论】:

              【解决方案7】:

              查看DiALog:A Distributed Model for Capturing Provenance and Auditing Information,除了分布式方面,还可以使用主谓宾原则来记录业务事件。然后重建某些踪迹。

              【讨论】:

                【解决方案8】:

                这是一个相关的帖子 - 我的。 Audit logging and exception management framework.

                【讨论】:

                • 您发布的链接可能有答案。但是,您应该在此处发布相关部分。
                猜你喜欢
                • 2018-11-18
                • 2010-10-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多