当前位置: 首页 > 知识库问答 >
问题:

使用Spring AOP集中日志记录

冉德元
2023-03-14

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

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

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

难题是这一点

1) 我们是否应该使用控制器设置要记录的新的专门日志对象的属性,然后使用AOP建议,在控制器方法执行完毕后检索日志对象以进行持久化

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

我对选项1的问题是,控制器会意识到日志记录,而且,根据良好的设计原则,控制器只应该将任务委托给业务和服务层来执行这些任务。选项1将意味着控制器所做的不仅仅是委托任务,即它将构建日志对象

我对选项2的问题是,它将我的日志对象与请求对象紧密耦合在一起。因此,我想知道这种方法是否有任何潜力。

欢迎提出任何建议、建议和批评。此外,如果有人不得不处理类似的情况,我想听听他们是如何着手解决这个问题的。

提前谢谢大家。

共有1个答案

雷浩思
2023-03-14

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

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

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

 类似资料:
  • 我正在寻找一种方法来集中分布式软件(用Java编写)的日志问题,这将非常简单,因为所讨论的系统只有一台服务器。但请记住,未来很可能会运行更多特定服务器的实例(并且需要更多的应用程序),因此必须有类似日志服务器的东西,它负责处理传入日志,并使支持团队能够访问这些日志。 目前的情况是,一些java应用程序使用log4j将其数据写入本地文件,因此,如果客户机过期出现问题,支持团队必须要求提供日志,这并不

  • 这是我的配置映射(通过命令kubectl edit cm):

  • 我试图从log4j1更改为log4j2。我所做的: 已删除旧配置文件log4j。xml 创建了新的配置文件log4j2。xml 创建了jboss部署结构。xml 编辑的pom 环境:野蝇10 1 EAR 4 WAR文件中没有使用web.xml。以前的log4j配置日志在EAR中(仅) Log4j2配置文件 Jboss部署结构 新的maven依赖关系 我之前说过我在SLF4j中使用log4j1。这些

  • 我正在使用python日志记录我的程序。所有日志当前都打印在stdout上,但我希望使用POST REST调用将它们发送到远程日志服务器。当前,我的程序发出了多个日志记录的POST请求。有没有更优化的方式发送日志,我可以捆绑多个日志在一个POST请求?

  • 此任务将展示如何配置 Istio 创建自定义日志条目并且发送给 Fluentd 守护进程。Fluentd 是一个开源的日志收集器, 支持多种数据输出并且有一个可插拔架构。 Elasticsearch是一个流行的后端日志记录程序, Kibana 用于查看。在任务结束后, 一个新的日志流将被加载发送日志到示例 Fluentd/Elasticsearch/Kibana 栈。 在任务中,将使用 BookI

  • 本文向大家介绍Powershell使用WINDOWS事件日志记录程序日志,包括了Powershell使用WINDOWS事件日志记录程序日志的使用技巧和注意事项,需要的朋友参考一下 通常,人们使用基于文件的日志。这样做没有什么问题,但是使用WINDOWS提供系统内部日志会更加简单。 如果你有管理权限,你可以随时创建一个新的日志: 该命令创造了一个名为Mylog的日志,这个事件源自”JobDUE”,”