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

时间:2014-12-26 07:13:02

标签: domain-driven-design onion-architecture

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

3 个答案:

答案 0 :(得分:5)

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

您需要创建一个库并实现您的日志类,例如“MyProject.CrossCutting.Logging”,并使用面向方面的方法使用此库记录事件。

Typical Onion Architecture

答案 1 :(得分:3)

日志记录横跨您的所有应用程序。这应该是你的框架的一部分。所有应用程序项目的所有层都依赖于您的框架,就像它们依赖于.Net Framework,Spring等一样。如果您的框架必须具有可以轻松依赖的跨领域关注的抽象,然后,必须在基础结构中的应用程序的组合根中引用实现。

答案 2 :(得分:1)

如果您正在关注DDD和洋葱架构,那么您拥有多少个域并不重要。如果需要,每个域都可以实现自己的Logger版本。更有可能的是,您将创建一个日志接口,并且可能是保存在公共层中的静态实现,可由任何需要它的层调用。在先前共享的图像中,它将保留在交叉切割层中。如前所述,日志记录是所有层的关注点。