Как настроить уровень регистратора JSch?
Это похоже на Log4J, настраиваемый через XML?
Как настроить уровень регистратора JSch?
Это похоже на Log4J, настраиваемый через XML?
Похоже, 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...
}
}
Затем перед использованием JSch:
JSch.setLogger(new JSCHLogger());
Обратите внимание, что вместо MyLevel
и MyLogger
вы можете использовать любые классы фреймворка ведения журнала (Log4j, Logback,...)
Полный пример можно найти здесь: http://www.jcraft.com/jsch/examples/Logger.java.html
public static final Logger SIMPLE_LOGGER=new Logger(){ public boolean isEnabled(int level){return true;} public void log(int level, String message){System.err.println(message);} };
Обратите внимание, что обязательно используйте интерфейс Logger из пакета Jsch.
- person Realn0whereman; 09.08.2018
Просто хотел добавить небольшой комментарий к принятому ответу, но репутация не позволяет. Извините, если этот путь через другой ответ является злом, но действительно хочу упомянуть следующее.
Активация журнала работает таким образом и может дать вам много информации о процессе подключения (обмен ключами и т. д.). Но такого понятия, как отладочный вывод для основного функционала после аутентификации, практически нет, по крайней мере, для SFTP. И взгляд на источник показывает/подтверждает, что в ChannelSftp (и большинстве других классов) нет регистрации.
Поэтому, если вы хотите активировать это для проверки проблем со связью (после аутентификации), это напрасно - или вам нужно добавить подходящие утверждения в источник самостоятельно (я еще этого не сделал).
Мы сталкиваемся с полными зависаниями (потоки заданий застревают на несколько дней/бесконечно) в put, get и даже ls — и, конечно же, поставщик сервера утверждает, что это не проблема (и действительно работает клиент командной строки unix sftp — но не с сервера приложений). хост, к которому у нас нет доступа... поэтому нам придется проверить сетевое соединение). Если у кого-то есть идея, спасибо ..