这里有些东西对我来说不太对劲,所以我想要社区的意见--也许我是以错误的方式对待这件事……
events:是否适合使用传统的基础结构日志框架(如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当然,这些信息并不能很好地融入其中。最好的描述是信息,但当然这些都是重要的事件,而且信息的重要性很低。
我仍然希望这是一个“日志”(例如,我不想每次看到它时都从我的业务对象中提取它)
在我看来,我有两个选择:
1)使用像log4net这样的框架,并为此定义一个特殊的记录器(并接受这样一个事实:它感觉不对)。
2)提供不依赖于传统日志记录服务的用于执行此操作的服务。
我倾向于2。在类似的情况下,还有人做过什么?
谢谢!
发布于 2009-10-27 14:01:17
您想要的东西听起来像是审计服务,而不是日志服务。如果我是对的,你的目标是跟踪这些商业事件的历史,甚至可能是报告的目的。您可以使用审核中的详细信息,如果没有更好的短语,则可以将系统中发生的事件归咎于此。
为此,我可能不会使用像log4j这样的日志系统。在我们的系统中,审计是一流的公民,是一项全面的服务。
- HTH,Dusty
发布于 2009-10-27 13:58:33
这些听起来像是你的客户可能想从你的应用程序中查询或报告的东西--显而易见的选择是数据库。
在这个例子中,我觉得传统的日志框架并不合适,因为当涉及到以后您可能希望在应用程序日志框架中访问的数据时,您可以做一些没有意义的事情,例如,您可以根据app.config文件更改日志发送到的位置(如果尝试从不同的位置读取它,这是没有帮助的)。
尽管如此,如果日志框架允许您做您想做的事情,那么仅仅使用日志框架作为您的实现并节省您自己的精力并不会让您感到羞耻:
class TransactionLogger
{
public void Log (Message message)
{
MyLoggingFramework.Log(message.string, etc...);
}
}发布于 2009-10-27 13:59:09
让记录器去做与程序有关的事情,而不是做生意。它只是一个帮助开发人员的工具。
编写自己的系统来记录业务事件。如果有记录是业务要求,那么您将需要一些您可以控制的东西,并且需要使用上面的记录器来跟踪它的工作方式。
基本上,你问题中的第二条。
https://stackoverflow.com/questions/1630976
复制相似问题