gpt4 book ai didi

java - logger(java.util.logging) 突然停止将输出打印到控制台,尽管它在文件中打印

转载 作者:行者123 更新时间:2023-12-01 09:05:49 25 4
gpt4 key购买 nike

我正在使用 java.util.logging 来设置记录器,代码如下: fh = new FileHandler(file.getAbsolutePath());
logger.addHandler(fh);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
logger.setLevel(Level.ALL);
记录器可以与控制台和文件一起正常工作。但是在下面的 JSch 代码片段之后 ` channel channel = session.openChannel("exec");

    ((ChannelExec) channel).setCommand(cmd1);

channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);

logger.info("creating tar ,executing command :"+cmd1);

channel.connect();

while (true) {
if (channel.isClosed()) {
System.out.println( logger.getHandlers());
// doesn't log afterwards
logger.info("exit-status: " + channel.getExitStatus());
if (channel.getExitStatus() == 0)
logger.info("tar file with " + tarFileName
+ "has been created successfully at " + path);
break;
}
try {
Thread.sleep(1000);
} catch (Exception ee) {
}
}`

我猜当我执行命令时处理程序已经更改。如何重置处理程序以便它也开始打印到控制台。

最佳答案

JSch channel.disconnect prevent logs from printing 中所述

你必须改变:

((ChannelExec) channel).setErrStream(System.err);

((ChannelExec) channel).setErrStream(System.err, true);

否则,当 channel 关闭时,System.err 也会关闭,这将在退出时发生。关闭 System.err 将阻止您在控制台上看到输出。

另一种选择是将 System.err 包装在忽略关闭调用的流中。

关于java - logger(java.util.logging) 突然停止将输出打印到控制台,尽管它在文件中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41296659/

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