gpt4 book ai didi

java - 使用 Pump StreamHandler 将输出和错误写入日志文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:04 27 4
gpt4 key购买 nike

我一直在寻找一个很好的例子来将进程输出和错误流写入日志文件。我使用 apache-commons exec 库来执行我的进程。按照代码示例进行演示

public static int executeCommand(CommandLine command, Logger log) throws ExecuteException, IOException {
DefaultExecutor executor = new DefaultExecutor();
executor.setExitValue(0);

PumpStreamHandler psh = new PumpStreamHandler();
executor.setStreamHandler(psh);

return executor.execute(command);
}

最佳答案

下面是实现这个的代码。

class ExecLogHandler extends LogOutputStream {
private Logger log;

public ExecLogHandler(Logger log, Level logLevel) {
super(logLevel.toInt());
this.log = log;
}

@Override
protected void processLine(String line, int logLevel) {
log.log(Level.toLevel(logLevel), line);
}
}

这就是我们如何使用上面的类。

public static int executeCommand(CommandLine command, Logger log) throws ExecuteException, IOException {
DefaultExecutor executor = new DefaultExecutor();
executor.setExitValue(0);

PumpStreamHandler psh = new PumpStreamHandler(new ExecLogHandler(log, Level.DEBUG), new ExecLogHandler(log, Level.ERROR));
executor.setStreamHandler(psh);

return executor.execute(command);
}

像这样使用 apache-commons exec 使(程序员的)代码和生活变得如此简单。我能够丢弃大量使用 Runtime.exec 执行命令行命令的代码。

关于java - 使用 Pump StreamHandler 将输出和错误写入日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com