这是创建日志系统的好方法

时间:2012-09-26 12:08:08

标签: asp.net logging event-handling subscription single-responsibility-principle

我想创建一个不记录异常的日志系统,而是创建用户活动以及他们对数据执行的操作。例如,当用户删除记录时,我想记录用户名,记录ID,日期和....

首先我决定创建一个日志类,并在所有其他类方法中使用它的方法。但经过一些阅读博客和搜索SO之后,我发现这种方法违反了OOP的SRP原则。

现在我正在考虑另一个解决方案。我还有我的日志类。但是我不应该在代码中调用它的方法,而应该使用事件。我正在考虑添加一个监听器类,该类订阅由其他类调用的事件。

假设在页面中我有一个删除订单的方法:

protected void DeleteOrder(Order order)
{
    Orders.Delete(order);
    DeletedEvent(this,order); 
}

然后订阅者使用发送的数据来创建日志。此类检查对象类型,并根据类型调用正确的私有方法,以使用对象属性创建日志。

一般适用吗?如果是的话,这是一个好方法吗?提前谢谢

1 个答案:

答案 0 :(得分:1)

是的,你的方法很好。

这是一个MVC.NET应用程序吗?看看这篇文章:

http://weblogs.asp.net/shijuvarghese/archive/2011/07/18/user-activity-logging-in-asp-net-mvc-app-using-action-filter-and-log4net.aspx