使用Spring AOP集中日志

我希望你们能够帮助我解决当前面临的难题。我目前正在研究现有的Web应用程序项目,其中一个要求是我们必须集中记录日志。 该应用程序是由客户层(即视图),服务层,业务层和DAO层组成的分层应用程序。

目前,登录应用程序由控制器方法处理,其中每个控制器方法需要记录一些信息,通过调用记录功能手动记录数据。 这些控制器方法处理的请求来自许多不同的客户端来源,包括移动设备(如电话),Web浏览器,Web服务等。目前,所有需要记录的数据都被捕获到通用对象中,该对象被传递给日志记录方法将这些属性保存到数据库表中。

问题是这个通用对象就是一个通用对象。 它用于许多其他任务,包括日志记录,搜索和许多其他任务。 当这个通用对象用于日志记录时,除了一些属性之外,用于填充通用对象(在日志记录的情况下)的大多数属性来自请求,即(HttpServletRequest对象) 。 由于这个对象的多功能性,这个通用对象有可能被误用。 因此,我们希望摆脱这个通用对象并为特定任务创建专用对象。在日志记录的情况下,我们决定创建一个记录对象,我们将使用它保存我们需要记录的数据。 我们将使用Spring AOP来实现日志记录

这是一个难题

1)我们是否应该使用控制器来设置我们想要记录的新的专用日志记录对象的属性,然后使用AOP通知,一旦控制器方法完成执行,就检索持久性的日志对象

要么

2)我们应该使用放置在请求对象中的属性(即HttpServletRequest对象)在AOP建议中设置新日志对象的属性?

选项1的问题在于控制器意识到日志记录,并且根据良好的设计原则,控制器只应将任务委托给业务层和服务层以执行此类任务。 选项1意味着控制器不仅仅是委托任务,也就是构建日志对象

我对选项2的问题是,它将我的日志记录对象与请求对象(即HttpServletRequest对象)紧密地结合在一起,因此我想知道这种方法是否有潜力。

任何建议,建议和批评都将受到欢迎。 另外,如果有人不得不面对类似的情况,我想听听他们如何解决这个问题。

谢谢大家。


我会将日志记录添加到服务层,使用方面表示为接口。

您可以使用HTTP过滤器或方面从控制器层进行登录。

您可以根据需要在多个图层中应用AOP。

链接地址: http://www.djcxy.com/p/95173.html

上一篇: Centralising logging using Spring AOP

下一篇: Aspect oriented programming (AOP) in Python