1

我有一个在(便宜的)托管公司解决方案上运行的网站。数据库和网络服务器在那里。我想记录我的应用程序上发生的活动,通过层(也许不是那么多的演示)。因此,已经进行了服务调用......业务功能已经在 BL 中运行......执行了数据库调用......异常被捕获。

这些层都是分开的。所以,我想记录到数据库是不明智的,因为我需要从所有层访问数据库。例如,用户选择产品。在服务方法 (GetProductById) 上,我要记录它已执行。然后该方法调用 BL 中的 GetProductById。我也想在那里登录......最后,我的 GetProductById 在我的数据访问器中。我需要所有层的数据库连接。

我正在考虑添加一个公开一种方法(Log)的小类。并从每一层引用该 DLL。并且该 DLL 接收一条消息,并通过一种方法与 DB 建立自己的连接 - 写入行。但是,这会不会太多开销?每个“日志”事件都是打开数据库、写入、关闭。是不是有点重?数据库功能强大……但是一次调用可能会导致 3 到 30 个“日志”事件(不过,这将帮助我找到代码的问题)。

独立的记录器类很有吸引力,因为我可以根据需要将其更改为文件记录器。但更喜欢查询表的能力,例如“ErrorLevel”。或者其他的东西。

我唯一的问题是开销。有什么好担心的吗?

4

1 回答 1

2

日志是一个横切关注点,所以从“层”的角度来看它并没有真正的意义。不要担心它是否命中数据库。

我建议使用已经创建的日志库而不是创建自己的日志库。因为它已经解决了您担心的所有这些问题(如何从中获得最佳性能,不占用大量资源等)。 NLog是一个非常好的支持,专门为 ASP.NET 网站提供支持,并且在您的其他层中也能很好地工作。它有文件或数据库写入的解决方案。

于 2013-07-20T21:14:37.493 回答