gpt4 book ai didi

Java - 控制台上的记录器出现问题

转载 作者:行者123 更新时间:2023-12-02 02:14:07 28 4
gpt4 key购买 nike

我正在用 Java 开发 Connect4 游戏,但我在使用记录器时遇到了问题。我不知道为什么在其他类型的打印品之间在不同的地方打印广告。

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.GameViewsetPlacement
INFO: Player1 placed a checker in position : column 4, row 5
| - | - | - | - | - | - |
| - | - | - | - | - | - | - |
| - | O | O | O | - | - | - |
| O | X | X | X | - | - | - |

*****************************

有人可以解释一下为什么记录器会这样吗?

最佳答案

this question 的回复关于 System::out 和 System::err 可能会对您有所帮助。具体来说,您的控制台同时显示两个输出流,发送到不同流的消息之间没有顺序保证。

使记录器能够写入标准输出流的一种方法是创建您自己的 StreamHandler并配置您的记录器以将输入发送到处理程序。您可能还需要disable parent handlers以避免重复输出。您可能还想确保输出主动发送到所需的输出流,如下所示:

Handler h = new StreamHandler(System.out, formatter)
{
public void publish(LogRecord record)
{
if(record == null)
return;
super.publish(record);
super.flush();
}
};

关于Java - 控制台上的记录器出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57313291/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com