slf4j为什么用{}而不是%s

%s是基本库内置,而且格式化也更好:
logger.info("param1: %s, param2: %d{yyyy-MM-dd}", "", new Date());
logger.info("param1: {}, param2: {}", "", Formatter.format(new Date(), "yyyy-MM-dd"));
明显第一个更好

阅读 4.3k
3 个回答

有人对这个问题有什么研究的吗?代码洁癖,急

你的意思是:

logger.info(String.format("param1: %s, param2: %d{yyyy-MM-dd}", "", new Date()));
//vs
logger.info("param1: {}, param2: {}", "", Formatter.format(new Date(), "yyyy-MM-dd"));

当然第二种,因为第二种可以在日志级别大于info的时候,直接不去拼接字符串
但是虽然没有拼接字符串,但是Formatter.format(new Date(), "yyyy-MM-dd"))还是执行了
这就是在一些框架里经常看到的代码的原因

if(logger.enableInfo()){
    logger.info(...);
}

你为什么觉得第一个好用呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题