我想解决这个问题:
大多数应用都有一些日志记录服务,用于将应用程序中的事件报告给商业智能分析数据库。此外,像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项目来做到这一点。
杰克沃顿通过木材让我们分道扬.. https://github.com/JakeWharton/timber这是注入日志框架的一种好方法,但仍会导致开发人员对代码进行调用。