我有一个在(便宜的)托管公司解决方案上运行的网站。数据库和网络服务器在那里。我想记录我的应用程序上发生的活动,通过层(也许不是那么多的演示)。因此,已经进行了服务调用......业务功能已经在 BL 中运行......执行了数据库调用......异常被捕获。
这些层都是分开的。所以,我想记录到数据库是不明智的,因为我需要从所有层访问数据库。例如,用户选择产品。在服务方法 (GetProductById) 上,我要记录它已执行。然后该方法调用 BL 中的 GetProductById。我也想在那里登录......最后,我的 GetProductById 在我的数据访问器中。我需要所有层的数据库连接。
我正在考虑添加一个公开一种方法(Log)的小类。并从每一层引用该 DLL。并且该 DLL 接收一条消息,并通过一种方法与 DB 建立自己的连接 - 写入行。但是,这会不会太多开销?每个“日志”事件都是打开数据库、写入、关闭。是不是有点重?数据库功能强大……但是一次调用可能会导致 3 到 30 个“日志”事件(不过,这将帮助我找到代码的问题)。
独立的记录器类很有吸引力,因为我可以根据需要将其更改为文件记录器。但更喜欢查询表的能力,例如“ErrorLevel”。或者其他的东西。
我唯一的问题是开销。有什么好担心的吗?