xav*_*xav 18
JSch似乎没有使用任何已知的日志框架(我使用的是JSch v0.1.49,但是最后一个版本是v0.1.51),或者任何XML配置文件.所以这就是我所做的:
private class JSCHLogger implements com.jcraft.jsch.Logger {
private Map<Integer, MyLevel> levels = new HashMap<Integer, MyLevel>();
private final MyLogger LOGGER;
public JSCHLogger() {
// Mapping between JSch levels and our own levels
levels.put(DEBUG, MyLevel.FINE);
levels.put(INFO, MyLevel.INFO);
levels.put(WARN, MyLevel.WARNING);
levels.put(ERROR, MyLevel.SEVERE);
levels.put(FATAL, MyLevel.SEVERE);
LOGGER = MyLogger.getLogger(...); // Anything you want here, depending on your logging framework
}
@Override
public boolean isEnabled(int pLevel) {
return true; // here, all levels enabled
}
@Override
public void log(int pLevel, String pMessage) {
MyLevel level = levels.get(pLevel);
if (level == null) {
level = MyLevel.SEVERE;
}
LOGGER.log(level, pMessage); // logging-framework dependent...
}
}
Run Code Online (Sandbox Code Playgroud)
然后在使用JSch之前:
JSch.setLogger(new JSCHLogger());
Run Code Online (Sandbox Code Playgroud)
请注意,代替MyLevel和MyLogger,您可以使用您想要的任何日志框架类(Log4j,Logback,...)
您可以在此处获得完整的示例:http://www.jcraft.com/jsch/examples/Logger.java.html
小智 8
只是想在接受的答案中添加一个小评论,但声誉不允许.对不起,如果这种方式通过另一个答案是邪恶的,但真的要提到以下.
日志激活以这种方式工作,它可以为您提供有关连接过程(密钥交换等)的大量信息.但是,在认证之后,核心功能几乎没有调试输出,至少对于SFTP.看一下源代码显示/确认ChannelSftp(以及其他大多数类)都没有登录.
因此,如果您想激活它以便检查浪费的通信问题(在身份验证之后) - 或者您需要自己向源添加合适的语句(我还没有).
我们在put,get甚至ls中遇到完全挂起(工作线程被卡住了几天/无限) - 当然服务器提供商声称不是问题(事实上unix sftp命令行客户端工作 - 但不是来自appserver主机,我们无法访问..因此我们必须检查网络通信).如果有人有想法,谢谢..
| 归档时间: |
|
| 查看次数: |
13669 次 |
| 最近记录: |