有什么方法可以将命令提示符错误日志存储在某处吗?

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);
    }
}