Java Logger如何避免逐行打印数字位 实现完整数字单行输出
问题原因
logger.info()每调用一次就会输出一条独立日志,日志框架默认会在每条日志末尾自动追加换行符。你把失败提示、每一位数字拆成了多次logger.info()调用,自然会出现每条内容各占一行的问题,不可能自动拼接到同一行。
解决方法
核心思路:先把数字数组的每一位拼接成完整的数字字符串,再一次性调用logger输出整行内容,不要拆分多次日志调用。
方法1:兼容所有Java版本的StringBuilder拼接(适合初学者)
不需要依赖高版本特性,手动循环拼接数字后统一输出,同时用logger自带的参数占位符{}传参,比直接用+拼接字符串性能更好:
StringBuilder targetNum = new StringBuilder(); for (int digit : random) { targetNum.append(digit); } logger.info("{}, you lose. The number is : {}", player, targetNum);
如果你的random数组存的是字符类型,直接append即可,逻辑完全一致。
方法2:Java 8+ 简便写法
用Stream流可以一行完成数组拼接,不用手动写循环:
// 需提前导包:import java.util.Arrays; import java.util.stream.Collectors; String targetNum = Arrays.stream(random) .mapToObj(String::valueOf) .collect(Collectors.joining()); logger.info("{}, you lose. The number is : {}", player, targetNum);
注意:不要试图通过修改日志配置去掉换行符实现多行拼接,会破坏全局所有日志的正常输出格式,完全没有必要。
内容的提问来源于stack exchange,提问作者ViktorsAlohins
相关产品推荐
相关产品推荐

