如何将 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());
}
我可以用 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());
}