有什么方法可以将命令提示符错误日志存储在某处吗?
Is there any way command prompt error logs can be stored somewhere?
我在命令提示符中有 运行 个 java jar 文件。假设程序执行因某些错误而失败,我希望将错误记录在某个地方,以便稍后检查。
有什么办法可以实现吗?
我认为 logback 正是您要找的 (http://logback.qos.ch/index.html)。
它可以帮助您配置日志级别(信息、调试、错误...)和日志文件的位置。
您可以使用命令 > output.txt
将命令行输出存储到单独的文件中。
java -jar application.jar > output.txt
您也可以为 output.txt 使用位置自定义位置。
java -jar application.jar > D:\myfolder\output.txt
或者您可以使用 Runtime.getRuntime().exec()
为 运行 外部 jar 应用程序创建一个 java 程序,这有助于您根据输出操作输出以显示和执行操作。
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);
}
}
我在命令提示符中有 运行 个 java jar 文件。假设程序执行因某些错误而失败,我希望将错误记录在某个地方,以便稍后检查。
有什么办法可以实现吗?
我认为 logback 正是您要找的 (http://logback.qos.ch/index.html)。 它可以帮助您配置日志级别(信息、调试、错误...)和日志文件的位置。
您可以使用命令 > output.txt
将命令行输出存储到单独的文件中。
java -jar application.jar > output.txt
您也可以为 output.txt 使用位置自定义位置。
java -jar application.jar > D:\myfolder\output.txt
或者您可以使用 Runtime.getRuntime().exec()
为 运行 外部 jar 应用程序创建一个 java 程序,这有助于您根据输出操作输出以显示和执行操作。
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);
}
}