log.info不报错也不打印变量内容原因:缺少占位符 { }

起因

使用 hutool 的 JSONUtil.parse() 时发现打印不出变量内容,但是也不报错,只是空白。

错误代码

JSONObject firmwareSystemDTO= JSONUtil.parseObj(jsonStr);
log.info("firmwareSystemDTO: ",firmwareSystemDTO);

打印结果只有前面的字符串

firmwareSystemDTO:

 考虑了使用错误、语法错误等多方面的因素后,还是不能打印出结果。

发现错误

询问AI之后发现问题不在json解析,而在log.info的打印。

Slf4j、Log4j 等日志框架要求使用 {} 占位符明确参数位置。若未添加占位符,参数会被忽略。

// ❌ 错误写法:缺少占位符
log.info("firmwareSystemDTO: ", firmwareSystemDTO);

// ✅ 正确写法:添加占位符
log.info("firmwareSystemDTO: {}", firmwareSystemDTO);

因为在js中占位符和普通字符串颜色不同,所以我没考虑过别的实例代码中的 {} 是占位符,所以不小心删掉之后也没有发现错误。

注意事项:

js 打印时字符串和变量用 ,+ 连接都可以

java 用 System.out.println 打印时字符串和变量用必须用 + (用 , 会报错)

java 用 log.info 打印时 ,+ 都不报错

  • , 连接时一定要用占位符 {}

  • + 连接时可以不用占位符 {}

log.info("deviceName:  ", deviceName);//打印不出deviceName内容
log.info("deviceName: {}  ", deviceName);//正常打印

log.info("productName: {}  "+ productName);//正常打印
log.info("productName:  "+ productName);//正常打印

 

posted @ 2025-04-23 10:29  sunshine233  阅读(208)  评论(0)    收藏  举报