如何使用Ganymed SSH-2启用FULL Logging

时间:2015-03-05 10:21:25

标签: java ssh java.util.logging

我正在开发一个使用Ganymed SSH-2

执行ssh命令的java应用程序

我需要为每个命令序列生成完整的日志,例如zip文件传输,解压缩,压缩等。

搜索ch.ethz.ssh2.log.Logger的源代码后,我可以将布尔值public static volatile boolean enabled = false;设置为true

这提供了以下输出

Mar 05, 2015 10:17:25 AM ch.ethz.ssh2.log.Logger info
INFO: kex_algo=diffie-hellman-group-exchange-sha1
Mar 05, 2015 10:17:25 AM ch.ethz.ssh2.log.Logger info
INFO: server_host_key_algo=ssh-rsa
Mar 05, 2015 10:17:25 AM ch.ethz.ssh2.log.Logger info
INFO: enc_algo_client_to_server=aes128-ctr
Mar 05, 2015 10:17:25 AM ch.ethz.ssh2.log.Logger info
INFO: enc_algo_server_to_client=aes128-ctr
Mar 05, 2015 10:17:25 AM ch.ethz.ssh2.log.Logger info
INFO: mac_algo_client_to_server=hmac-sha1-96
Mar 05, 2015 10:17:25 AM ch.ethz.ssh2.log.Logger info
INFO: mac_algo_server_to_client=hmac-sha1-96
Mar 05, 2015 10:17:25 AM ch.ethz.ssh2.log.Logger info
INFO: comp_algo_client_to_server=none
Mar 05, 2015 10:17:25 AM ch.ethz.ssh2.log.Logger info
INFO: comp_algo_server_to_client=none

但是我还需要所有级别的日志记录来执行命令,包括文件传输。

如何配置Logger以生成所有可用信息?

1 个答案:

答案 0 :(得分:1)

有点迟到的答案,但也许有人仍然需要这些信息。

我设法让调试语句显示如下:

    public void enableFineLogging() {
    try {
        ch.ethz.ssh2.log.Logger.enabled = true;
        String name = "myDynamicFileNamePart";

        FileHandler fileHandler = new FileHandler("./logs/"
                + name + "_SFTP.log", 10000000, 1000, true);
        fileHandler.setLevel(Level.FINE);
        fileHandler.setFormatter(new SimpleFormatter());

        final Logger app = Logger.getLogger("ch.ethz");
        app.setLevel(Level.FINE);
        app.addHandler(fileHandler);
        app.setUseParentHandlers(false);

    } catch (Exception e) {
        // Catchalog
    }
}

将结果存入以下文件:

  

marras 15,2017 12:16:56 IP。 org.slf4j.impl.JCLLoggerAdapter info

     

信息:客户端标识字符串:SSH-2.0-SSHJ_0.19.1

     

marras 15,2017 12:16:56 IP。 org.slf4j.impl.JCLLoggerAdapter info

     

信息:服务器标识字符串:SSH-2.0-OpenSSH_6.6.1

     

marras 15,2017 12:16:56 IP。 org.slf4j.impl.JCLLoggerAdapter debug

     

精细:设置<>到null

     

marras 15,2017 12:16:56 IP。 org.slf4j.impl.JCLLoggerAdapter debug

     

精细:发送SSH_MSG_KEXINIT

     

marras 15,2017 12:16:56 IP。 org.slf4j.impl.JCLLoggerAdapter debug

     

精细:设置<>到SOME

     

marras 15,2017 12:16:56 IP。 org.slf4j.impl.JCLLoggerAdapter debug

     

精细:等待<>

     

marras 15,2017 12:16:56 IP。 org.slf4j.impl.JCLLoggerAdapter debug

     

FINE:收到SSH_MSG_KEXINIT

如果您希望登录控制台,请使用ConsoleHandler。 退出日志记录后,还需要使用fileHandler.close()来关闭日志文件。

SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, ALL

中选择,调整日志级别