Как я могу использовать Apache Commons Cli с log4j? - PullRequest
0 голосов
/ 09 ноября 2018

Я могу написать такой код с помощью Apache Commons Cli:

HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("myapp", options, true);

При этом будут напечатаны все параметры командной строки и их описание.

Я хочу напечатать это с помощью регистратора, такого как log4j, но я не знаю как, в классе HelpFormatter есть только функция printHelp.

Я не хочу ничего чрезмерно проектировать, есть ли стандартный способ сделать это?

1 Ответ

0 голосов
/ 09 ноября 2018

Используйте один из двух методов printHelp, который принимает PrintWriter в качестве первого аргумента, присваивает ему PrintWriter обтекание StringWriter, а затем передает результат любому API-интерфейсу ведения журнала, который вы хотите использовать.

Пример

try (StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw)) {
    HelpFormatter f = new HelpFormatter();
    f.printHelp(pw, f.getWidth(), "myapp", null, options,
                f.getLeftPadding(), f.getDescPadding(), null, true);
    pw.flush();
    logger.info(sw.toString());
}
...