我可以使用apache commons cli编写这种代码:
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("myapp", options, true);
这将打印所有命令行选项及其描述。
我想使用Log4j之类的记录器进行打印,但我不知道如何,HelpFormatter类中只有printHelp函数。
我不想过度设计,有没有标准的方法?
答案 0 :(得分:1)
使用将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());
}