如何将 apache commons cli 与 log4j 一起使用?

How can I use apache commons cli with log4j?

我可以用 apache commons cli 写这种代码:

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

这将打印所有命令行选项及其说明。

我想用一个记录器打印这个,比如 log4j,但我不知道如何,HelpFormatter 中只有 printHelp 函数 class。

我不想过度设计任何东西,有没有标准的方法可以做到这一点?

使用将 PrintWriter 作为第一个参数的两个 printHelp 方法之一,给它一个 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());
}