【发布时间】:2020-05-25 06:11:36
【问题描述】:
我在命令提示符下运行了一个 java jar 文件。假设程序执行失败并出现一些错误,我希望将错误记录在某个地方以便我以后检查。
有什么方法可以实现吗?
【问题讨论】:
标签: java cmd command-line jar
我在命令提示符下运行了一个 java jar 文件。假设程序执行失败并出现一些错误,我希望将错误记录在某个地方以便我以后检查。
有什么方法可以实现吗?
【问题讨论】:
标签: java cmd command-line jar
您可以使用命令> output.txt 将命令行输出存储到单独的文件中。
java -jar application.jar > output.txt
您也可以对 output.txt 使用 location 自定义位置。
java -jar application.jar > D:\\myfolder\\output.txt
或者您可以创建一个 java 程序来使用 Runtime.getRuntime().exec() 运行外部 jar 应用程序,它可以帮助您操作输出以根据输出显示和执行操作。
Process myProcess = Runtime.getRuntime().exec("java -jar application.jar");
BufferedReader reader = new BufferedReader(new InputStreamReader(myProcess.getInputStream()));
while ((consoleOutput = reader.readLine()) != null) {
saveLogs(consoleOutput);
System.out.println(consoleOutput);
}
myProcess.waitFor();
InputStream in = myProcess.getInputStream();
InputStream err = myProcess.getErrorStream();
byte[] b = new byte[in.available()];
in.read(b, 0, b.length);
saveLogs(consoleOutput);
System.out.println(new String(b));
byte[] c = new byte[err.available()];
err.read(c, 0, c.length);
saveLogs(consoleOutput);
System.out.println(new String(c));
使用FileWriter 将控制台输出保存到文件中。
public void saveLogs(String text) {
try (FileWriter f = new FileWriter("log\\output.log", true);
BufferedWriter b = new BufferedWriter(f);
PrintWriter p = new PrintWriter(b);) {
p.println(text);
} catch (IOException ex) {
logger.error("SAVE_LOGS_ERROR", ex);
}
}
【讨论】:
我认为 logback 是您正在寻找的 (http://logback.qos.ch/index.html)。 它可以帮助您配置日志级别(信息、调试、错误...)和日志文件的位置。
【讨论】: