在大型应用程序中,日志记录是必不可少的,但是当许多开发人员处理代码时,日志会变得混乱。有人可能写道:
log.info("Loaded " + rowCount + " recodrs from the database.");
另一个人可能会这样做:
log.debug("Records read={}", rowCount);
第三位开发人员可能认为这是正确的方法:
log.trace("Record(s) read: " + NumberFormat.getInstance().format(rowCount)
+ ", values: " + values);
这将导致难以阅读的日志,并且难以解析。
您可以为开发人员提供哪些指导,以生成有可能保持一致且实际可供其他人使用的日志?关于伐木的政策是否有益?如果是这样,它应包括什么?是否应该有一个API(在日志框架之上)来强制执行此策略?
我也很好奇如何使代码看起来很相似,但更重要的问题是关于实际输出。
答案 0 :(得分:6)
那就是说,我遵循最低级别的一些通用拇指规则:
答案 1 :(得分:3)
通过开发人员在构建日志语句时引用的API或字符串格式来标准化消息。他们不应该在程序中输入这样的文本,即使是日志记录也是如此,原因就在于你调出的原因。当然,这意味着您还需要一个政策,并进行审核以确保该政策得到尊重。
答案 2 :(得分:2)
您可以使用AOP(AspectJ是最好的)来记录传递给方法的内容。你甚至可以只对方法进行切入点,所以它不会太多日志记录。您可以编写类似@Loggable的方法注释并在其上设置切入点,因此每个带有这些参数的方法都会被记录。
我认为方面是最好的方式。