如何正确处理Sonar提示的含占位符日志字符串重复问题?
解决Sonar提示的日志字符串重复问题
Sonar的提示没问题,带{}占位符的字符串照样可以定义成常量,完全不影响日志框架的参数替换逻辑,具体做法如下:
第一步:在你的类中定义一个静态常量,把重复的日志字符串放进去
private static final String LOG_QUEUING_WORKFLOW_MESSAGE = "Queuing workflow message with ID {} and shardedDatabaseId {}";常量名尽量见名知意,符合团队命名规范即可。
第二步:把原来三处的日志语句替换成引用这个常量的写法
log.info(LOG_QUEUING_WORKFLOW_MESSAGE, workflowQueueMessageString, shardedDatabaseId);
这样做既满足了Sonar的要求,也不会影响日志输出效果——SLF4J这类日志框架会自动把常量里的占位符和后续参数对应起来,输出内容和之前完全一致。而且后续如果要修改这条日志的文案,只需要调整常量这一处,不用逐个修改三个地方,维护性更强。
内容的提问来源于stack exchange,提问作者user496934
相关产品推荐
相关产品推荐

