Events 日志*业务*事件-使用日志框架?

Events 日志*业务*事件-使用日志框架?,events,logging,Events,Logging,我觉得这里有些不对劲,所以我希望社区的意见——也许我是以错误的方式处理这件事的 Q:是否适合使用传统的基础架构日志框架(如log4net)来记录业务事件? 当我说BusinessEvents时,我的意思是我想要这样一个全局日志: xx:xx Customer A purchased widget B. xx:xx Widget B was dispatched from warehouse. xx:xx Customer B payment declined. FATAL ERROR WARN

我觉得这里有些不对劲,所以我希望社区的意见——也许我是以错误的方式处理这件事的

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

当我说BusinessEvents时,我的意思是我想要这样一个全局日志:

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
大多数传统的基础架构日志框架都有如下事件级别:

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
当然,这些信息并不符合这一点。最好的描述应该是信息,但当然这些都是重要的事件,信息的重要性很低

我仍然希望这是一个“日志”(例如,我不想每次都要从我的业务对象中提取它)

在我看来,我有两个选择:

1) 使用类似log4net的框架,只需为此定义一个特殊的记录器(并接受这样一个事实,即它感觉不正确)

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

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


谢谢

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

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

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

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

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

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


基本上,在你的问题中,#2。

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

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

-- 嗯,,
Dusty

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

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


可以想象的是,一开始这映射到日志记录,但将来可能会映射到可靠的消息传递或数据库。

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

这在尝试使用通用日志记录方法时会产生问题,因此通常,在我所研究的系统中,这两种方法都会使用。
技术方面的日志记录,以及业务事件的业务事件日志记录

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


这使得信息的报告和管理变得简单,同时显然略微扩展了每个规范的范围。

您可以使用它,但您需要的是业务活动监视和事件处理软件。在我看来,IBMWebSphereBusinessMonitor提供了这种功能。它处理公共基本事件(Web服务分布式管理Web事件格式标准的IBM实现),然后获取该数据并创建业务活动仪表板。

签出
对话框
:,除了分布式方面之外,您还可以使用主谓宾原则来记录业务事件。然后重建某些轨迹。

这里是一个相关的后期挖掘

你发布的链接可能有答案。但是,您应该在这里发布相关部分。您提到了审计服务,您知道在这个审计空间中有任何库/服务相当于log4j吗?或者这是一个人通常自己开发的东西?