Java - 我应该使用常量来记录日志消息吗?

时间:2013-03-12 13:45:43

标签: java string logging compiler-construction

关于表单的快速问题。

我正在记录各种错误消息,我想知道是否应该在日志调用中为消息创建一个新字符串,或者在我用来存储其他字符串常量的接口中创建一个常量字符串,然后引用它。 我使用的是代码分析器代码,它提到了后者说更好的做法是创建一个字符串常量并引用它,即使字符串只使用一次。 我只是想知道情况确实如此吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

我不确定您使用的分析工具或配置方式,但建议似乎对我无效。 Java编译器已经为你创建了字符串常量(当代码调用log方法时,它通常不会分配新的String实例),那么手动完成这项工作有什么意义呢?

如果将字符串常量放入接口,则可以在类之间共享它们,但不能按照您认为的方式进行共享:Java编译器会将常量的值复制到使用它的代码中(因此生成的字节代码)将不再有对接口的引用!)

我的建议:关闭这个误导性的警告。

答案 1 :(得分:2)

记录应该易于添加和删除;只需提供一个非常薄的层。然后可能会使用MessageFormats,当用常量名称替换时,它容易出错/不可检查。

此外,还会导入字符串常量,然后在常量更改时无法再检测到更改。

日志字符串也不是很严格,自己提供信息。

最好将这些字符串标记为不可国际化。