【问题标题】:logger(java.util.logging) suddenly stops printing the output into the console though it printing in the filelogger(java.util.logging) 突然停止将输出打印到控制台,尽管它在文件中打印
【发布时间】:2017-01-07 01:02:08
【问题描述】:

我正在使用 java.util.logging 来设置记录器,代码如下: fh = new FileHandler(file.getAbsolutePath()); logger.addHandler(fh); SimpleFormatter formatter = new SimpleFormatter(); fh.setFormatter(formatter); logger.setLevel(Level.ALL); 记录器与控制台和文件一起工作正常。但是在下面的 JSch 代码 sn-p 之后 `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) {
        }
    }`

我猜我在执行命令时处理程序发生了变化。如何重置处理程序以便它也开始打印到控制台。

【问题讨论】:

标签: java logging jsch java.util.logging


【解决方案1】:

JSch channel.disconnect prevent logs from printing中所述

你必须改变:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2022-12-04
    • 1970-01-01
    • 2018-11-28
    • 2021-06-20
    • 1970-01-01
    • 2020-04-24
    • 2021-06-05
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多