Java 集中应用程序日志的优点和缺点是什么?
我希望了解使用AOP(例如使用AspectJ)将所有应用程序日志集中到单独文件中的利弊 。然而,我从未见过任何人将所有日志集中到一个或一堆文件中。因此,我想知道为什么 这样做的利弊是什么 我希望了解集中所有资源的利弊 应用程序使用AOP(例如,使用AspectJ)登录到单独的文件中 我将交替使用术语AOP和AspectJ。尽管如此,AOP是范例,AspectJ实现了它,就像OOP和Java一样 使用将横切关注点(CCC)集中到它们自己的模块(例如方面)中的好处与使用Java 集中应用程序日志的优点和缺点是什么?,java,aop,aspectj,spring-aop,Java,Aop,Aspectj,Spring Aop,我希望了解使用AOP(例如使用AspectJ)将所有应用程序日志集中到单独文件中的利弊 。然而,我从未见过任何人将所有日志集中到一个或一堆文件中。因此,我想知道为什么 这样做的利弊是什么 我希望了解集中所有资源的利弊 应用程序使用AOP(例如,使用AspectJ)登录到单独的文件中 我将交替使用术语AOP和AspectJ。尽管如此,AOP是范例,AspectJ实现了它,就像OOP和Java一样 使用将横切关注点(CCC)集中到它们自己的模块(例如方面)中的好处与使用OOP的模块化关注点类似。这些
OOP
的模块化关注点类似。这些好处在论文和书籍的文献中有描述,例如:
- 减少代码重复功能(如日志记录)不是在多个不同的地方复制,而是在一个方面复制。然后,可以使用切入点的概念将该功能应用到这几个地方李>
- 减少域相关和横切相关关注点之间的耦合(即关注点分离);例如,从域代码中删除日志记录遵循以下步骤:李>
- 提高代码重用性由于前面提到的关注点分离,一个(例如)增加了封装基于代码的模块和封装日志的模块的可重用性李>
- 处理代码;如下图所示
A类
和B类
)之间重复和分散,我们将这些与日志相关的功能封装到一个方面
文献中有一些关于AOP在横切关注点(如日志)模块化方面的好处的论文,即:
S.坎迪特和M.冈特。现实世界中面向方面的日志记录
系统。在关于方面、组件和模式的第一次AOSD研讨会上
基础设施软件(AOSD-2002),2002年3月
人们可以从文献中看到AOP的缺点,即:
- 雇佣熟练的程序员
- 遵循采用路径,确保您不会因为过度扩展自己而冒项目风险
- 修改构建和其他开发过程
- 处理工具的可用性
- (这是一个特别好的演示,展示了使用AOP的一些问题
- 必须学习一种新的范式
- 缺少工具支持
- 织造的性能
- 由于与CCC相关的代码被移到了其他地方,因此更难对代码进行推理。例如,相同的参数可以应用于子类化或装饰模式的使用。但是,IDE通过显示被截获的连接点来缓解这些问题。
例如,r解决方案是使用注释并截取这些注释: @伐木 public void some_method(){…}AspectJ
- ;此问题类似于。从中可以看出:
- 使用AspectJ时joinpoint模块的粒度(使用Spring AOP时更糟)可能很难获得日志记录所需的本地上下文,例如本地变量,这可能会迫使您重构代码,以便能够公开所需的连接点--。另一方面,重构代码实际上可能会改进它。发件人:可以阅读:
- 在连接点上提供建议的用例很少
- 对基础程序的看似微不足道的更改会导致 连接点中的更改
- 切入点不能真正区分所讨论的连接点
- 对于的不同实现,连接点的差异太大 AspectJ或只能以一种方式实现