我想创建一个日志系统,不是为了记录异常,而是为了记录用户活动及其对数据的处理。例如,当用户删除一条记录时,我想记录用户名、记录id、日期和。
首先,我决定创建一个日志类,并在所有其他类方法中使用它的方法。但在阅读了一些博客和搜索SO之后,我发现这种方法违背了OOP的SRP原则。
现在我正在考虑另一个解决方案。我还有日志课。但是,与其在所有代码中调用它的方法,我应该使用事件。我正在考虑添加一个侦听器类,该类订阅由其他类调用的事件。
假设在一个页面中,我有一个删除订单的方法:
protected void DeleteOrder(Order order)
{
Orders.Delete(order);
DeletedEvent(this,order);
}
则订阅者使用发送的数据来创建日志。这个类检查对象类型,并根据类型调用正确的私有方法来使用对象属性创建日志。
这在一般情况下适用吗?如果是,这是一个好方法吗?提前感谢
是的,您的方法很好。
这是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