Каков правильный / самый простой способ перенаправить вывод (out / err) из .execute()
или .parseArgs()
в регистратор (org.slf4j.Logger
)?
(Производственные процессы часто выполняются планировщиком с выводом в специальные c файлы журнала приложения. И stdout / err, если не перенаправляется, сбрасывается в журнал планировщика / сервера, что является не подходит. Отсюда этот вопрос.)
У меня что-то вроде этого:
Logger logger = LoggerFactory.getLogger(MyApp.class);
// ...
new CommandLine(new MyApp())
.setOut(new LoggerWriter(logger, Level.INFO)
.setErr(new LoggerWriter(logger, Level.ERROR)
.execute(args);
// ...
, где LoggerWriter
класс вдохновлен из здесь .