首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析特定的循环依赖: DAL和日志记录

如何解析特定的循环依赖: DAL和日志记录
EN

Stack Overflow用户
提问于 2009-01-20 19:12:18
回答 7查看 632关注 0票数 2

需要记录一些“高风险”数据操作。在这种情况下,“高风险”操作被定义为写入我们的ERP系统。碰巧我们正在将这些事件记录到SQL Server数据库中。

伪代码:

代码语言:javascript
复制
Public Class MyCompany.DAL.ERP {
  Public void WriteToERP(string msg) {
    // ... do the write
    MyCompany.Logging.Write("Wrote msg: " + msg);
  }
}

Public Class MyCompany.Logging {
  Public void Write(string msg) {
    MyCompany.DAL.ExecuteSQL("Insert INTO EventLog VALUES " + msg);
  }
}

消除这种紧密耦合的最佳实践是什么?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-01-20 19:19:09

嗯,IMHO日志是一个基础设施问题。你可以在你的DAL中使用它,但是你的记录器不应该使用你的DAL。

如果您删除了记录器对DAL的依赖,那么您也应该能够在其他项目中使用记录器。

票数 3
EN

Stack Overflow用户

发布于 2009-01-20 19:20:34

您可以创建自定义TraceListener (System.Diagnostics)以插入到公司的SQL Server数据库中。然后在应用程序代码中使用TraceSource / Trace (System.Diagnostics)进行日志记录。然后,您可以在设计时使用标准.NET配置来使用自定义TraceListener。这样,如果您需要更改事件日志记录,只需更改TraceListener即可。此外,您还可以在其他应用程序中重用TraceListener。

您还可以使用Enterprise Library的日志记录应用程序块和许多其他第三方日志记录解决方案。

票数 1
EN

Stack Overflow用户

发布于 2009-01-20 19:18:27

也许你可以让你的日志组件,移动到一个单独的程序集(我假设这是C#代码),引发一个事件,调用者可以在调用Logging.Write()之前注册。在Logging.Write()返回之后,从事件中注销。在事件处理程序中,您可以执行MyCompany.DAL.ExecuteSQL("Insert INTO EventLog VALUES“+ msg)调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/462656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档