我正在开发一个java应用程序,该应用程序使用Ganymed SSH-2
执行ssh命令
我需要为每个命令序列生成完整的日志,例如zip文件传输、解压缩、压缩等
在搜索了ch.ethz.ssh2.log.Logger
的源代码后,我可以将布尔public static volatile boolean enabled = false;
设置为真正的
这提供了以下输出
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以生成所有可用信息?
答案有点晚,但可能有人仍然需要这些信息。
我设法使调试语句可见,如下所示:
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
}
}
文件中的结果为:
马拉斯152017 12:16:56 IP。org.slf4j.impl.JCLLoggerAdapter信息
信息:客户端标识字符串:SSH-2.0-SSHJ_0.19.1
马拉斯152017 12:16:56 IP。org.slf4j.impl.JCLLoggerAdapter信息
信息:服务器标识字符串:SSH-2.0-OpenSSH_6.6.1
马拉斯152017 12:16:56 IP。org.slf4j.impl.JCLLoggerAdapter调试
FINE:设置<>至
null
马拉斯152017 12:16:56 IP。org.slf4j.impl.JCLLoggerAdapter调试
FINE:发送SSH_MSG_KEXINIT
马拉斯152017 12:16:56 IP。org.slf4j.impl.JCLLoggerAdapter调试
FINE:设置<>至
SOME
马拉斯152017 12:16:56 IP。org.slf4j.impl.JCLLoggerAdapter调试
精细:等待<>
马拉斯152017 12:16:56 IP。org.slf4j.impl.JCLLoggerAdapter调试
FINE:收到SSH_MSG_KEXINIT
如果您希望登录控制台,请使用ConsoleHandler。此外,在退出日志记录后,还需要考虑使用fileHandler.close()
关闭日志文件。
通过从SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, ALL
中进行选择来调整日志级别