这里的某些东西对我来说不合适,所以我希望社区的意见 - 也许我会以错误的方式接近这个......
问:是否适合使用传统的基础架构日志框架(如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.在类似情况下其他人做了什么?
谢谢!
答案 0 :(得分:4)
您想要的听起来像是审计服务,而不是日志服务。如果我是对的,您的目标是跟踪这些业务事件的历史记录,甚至报告目的。您可以使用审计中的详细信息,因为缺少更好的短语,会对系统中发生的事件负责。
为此,我可能不会使用日志系统,例如log4j。在我们的系统中,审计是一流的公民服务。
- HTH, 多尘
答案 1 :(得分:1)
这听起来像是您的客户可能希望在您的应用程序中查询或报告的各种事物 - 显而易见的选择是数据库。
特别是,在这种情况下,我觉得传统的日志框架不适合,因为当涉及到您可能以后想要在您的应用程序中访问的数据时,日志框架允许您执行那些没有意义的事情,因为例如,您可以根据app.config文件更改日志记录的发送位置(如果您尝试从其他位置读取该文件,则无法进行更改)。
也就是说,如果日志框架允许您完全按照自己的意愿行事,那么仅使用日志框架作为您的实现并节省您自己的努力就不会有任何耻辱:
class TransactionLogger
{
public void Log (Message message)
{
MyLoggingFramework.Log(message.string, etc...);
}
}
答案 2 :(得分:1)
让记录器留下与程序有关的事情,而不是业务。它只是一个帮助开发人员的工具。
编写您自己的系统来记录业务事件。如果拥有记录是业务要求,您将需要一些您可以控制的东西,并且您需要使用上面的记录器来跟踪它的工作原理。
基本上,你问题中的#2。
答案 3 :(得分:1)
对我来说,商业活动的想法是它在未来的一些商业处理中发挥作用,从实际触发商业行为到简单地用于分析。
因此,完全不同的QOS要求。需要自己的API。
最初可以概括地映射到日志记录,但将来可以转到可靠的消息传递或数据库。
答案 4 :(得分:0)
根据我的经验,商业活动包括大量或大量的幕后技术操作,只有某些商业活动对业务非常重要。
这在尝试使用通用日志记录方法时会产生问题,因此通常情况下,在我使用的系统中,都会使用这两种方法。
记录技术方面以及业务事件的业务事件日志记录。
业务事件日志记录,不使用与技术日志记录相同的技术,而是记录到自定义设计的历史记录/审计表(有时这些是分开的,具体取决于所需的详细信息),这是专为每个人设计的应用。 (这使审计人员和用户保持愉快和快乐。)
这样可以轻松报告和管理信息,同时显着扩大每个规范的范围。
答案 5 :(得分:0)
您可以使用它,但您需要的是业务活动监控和事件处理软件。 IBM WebSphere Business Monitor提供了这种功能。它处理公共基本事件(Web服务分布式管理Web事件格式标准的IBM实现),然后获取该数据并创建业务活动仪表板。
答案 6 :(得分:0)
签出DiALog
:A Distributed Model for Capturing Provenance and Auditing Information,除了分布式方面,您还可以使用subject-predicate-object原则来记录业务事件。然后重建某些小径。
答案 7 :(得分:0)