使用DDD进行日志记录应该在洋葱架构中

Mah*_*eri 9 domain-driven-design onion-architecture

我正在使用洋葱架构和域驱动设计开发控制台应用程序.我有两个域,我需要实现日志记录,我很困惑我可以放置日志记录组件.我可以将它放在两个域的相应基础架构中吗?或者在共享内核中可以在两个域中引用?如果我需要将它放在共享内核中我应该遵循的结构是什么?我的意思是核心,基础设施.

Dan*_*iel 6

日志记录跨所有应用程序。那应该是你框架的一部分。所有应用程序项目的所有层都可以依赖于您的框架,就像它们依赖于 .Net Framework、Spring 等一样。您的框架必须具有可以轻松依赖的横切关注点的抽象,并且然后只需在基础设施中的应用程序的组合根中引用该实现即可。


小智 5

记录是一个贯穿各领域的问题.面向方面的编程旨在将横​​切关注点纳入方面.这样可以实现清晰的隔离和代码重用,从而解决交叉问题.

您需要创建一个图书馆和实现你的日志类,像"MyProject.CrossCutting.Logging",并登录使用这个库的事件使用面向方面的方法.

典型的洋葱建筑


小智 5

如果您遵循 DDD 和洋葱架构,那么您拥有多少个域并不重要。如果需要,每个域都可以实现自己的记录器版本。很可能,您将创建一个日志记录接口,并可能创建一个保存在公共层中的静态实现,可以由任何需要它的层调用。在之前分享的图片中,它会保留在Cross-Cutting Layer中。如前所述,日志记录是所有层都关心的问题。

  • @MaheshkumarCh 日志记录不是域问题。它不应该出现在任何域模型中,无论是共享内核还是独立域。 (3认同)