我正在用 Java 开发 Connect4 游戏,但我在使用 Logger 时遇到了问题。我不知道为什么在其他类型的印刷品之间在不同的地方印刷广告。public void setPlacement(Move lastMove){ Logger.getGlobal().info("Player" + lastMove.getPlayerIndex() + " placed a checker in position : " + lastMove.toString()); display();}方法 display() 只是打印游戏的网格。这是上述方法的输出:| 1 | 2 | 3 | 4 | 5 | 6 | 7 || - | - | - | - | - | - | - || - | - | - | - | - | - | - || - ago 01, 2019 6:10:24 PM it.unicam.cs.pa.connectFour.GameViewsetPlacementINFO: Player1 placed a checker in position : column 4, row 5| - | - | - | - | - | - || - | - | - | - | - | - | - || - | O | O | O | - | - | - || O | X | X | X | - | - | - |*****************************有人能解释一下为什么记录器会这样吗?
1 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
具体来说,您的控制台同时显示两个输出流,发送到不同流的消息之间没有顺序保证。
使 Logger 能够写入标准输出流的一种方法是创建您自己的StreamHandler并将您的 Logger 配置为将输入发送到处理程序。您可能还必须禁用父处理程序以避免重复输出。您可能还希望确保输出主动发送到所需的输出流,如下所示:
Handler h = new StreamHandler(System.out, formatter)
{
public void publish(LogRecord record)
{
if(record == null)
return;
super.publish(record);
super.flush();
}
};
添加回答
举报
0/150
提交
取消