gpt4 book ai didi

java - Java API 设计中的面向对象事件日志记录

转载 作者:可可西里 更新时间:2023-11-01 11:42:57 24 4
gpt4 key购买 nike

我想解决这个问题:

大多数应用程序都有一些日志记录服务,用于将应用程序中的事件报告给商业智能分析数据库。此外,像 android 这样的移动应用程序会报告相同的内容,例如用户行为等。有很多图书馆可以做到这一点。

问题:当开发人员想要在他们的代码中添加日志记录时,通常是通过散布代码行来报告他们方法中的某些内容,例如:

      void doStuff() {
try {
doTheThing():
logger.info("the thing was done", someClientInfoDTO, timestamp, eventid);
} catch(Throwable woops) {
logger.error(woops);
}

}

我到处都能看到这种模式以一种或另一种形式出现。我想采用面向对象的方法进行日志记录,以便可以使用其日志记录行为对类进行注释。消除了开发人员仅在他们认为重要的事情足以记录正在发生的地方粘贴日志记录代码行的需要。

我的想法是像这样重写上面的代码:

@Logger("class level logger")
class StuffDoer {
@Logger("what to log", whatToDoOnError, etc)
void doStuff() {
doTheThing():
}
}

问题:是否有任何库或现有项目可以解决该问题。有没有人有成功做到这一点的例子?我不想重新发明轮子,但我一直在挖掘,结果一无所获。根据对这个问题的回答,我可能会启动一个 github 项目来执行此操作。

Jake Wharton 让我们与木材分道扬镳:https://github.com/JakeWharton/timber这是注入(inject)日志记录框架的好方法,但仍然会导致开发人员通过调用它来添加代码。

最佳答案

面向方面的编程正是您所需要的。

方面是一种常见的特性,通常分散在方法、类、对象层次结构甚至整个对象模型中。它是看起来和闻起来都应该具有结构的行为,但您无法使用传统的面向对象技术找到一种在代码中表达这种结构的方法。

方面通常用于日志记录缓存验证监控

Here是基本描述以及一些库,如 AspectJ

关于java - Java API 设计中的面向对象事件日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35460076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com