重定向 Java 控制台消息



我写了一个复杂的应用程序,现在我必须在一些测试人员的帮助下调试它。我现在面临的问题是他们无法知道在使用软件期间发生了什么样的异常。有没有一种快速的方法可以在用户使用应用程序或小程序时获取控制台流并在另一个窗口中显示其消息?

您可以在应用程序启动时将所有控制台消息重定向到文件(或其他流),然后查找文件内容以获取异常:

    FileOutputStream fos = new FileOutputStream("log.txt");
    PrintStream out = new PrintStream(fos);
    System.setOut(out);
    System.setErr(out);
    System.out.println("Logged to file");

将像slf4j这样的日志记录框架与logback一起使用。它提供了数十种不同的"附加程序" - 将日志消息保存在不同位置的帮助程序。

对于您的用例,我建议编写一个新的追加器,用于收集线程安全列表中的最后 100 条消息。

将其附加到根记录器(请参阅文档)。

记录错误或异常时,从列表中获取所有消息并将其转换为字符串。使用 logback 时,为此创建一个编码器。

连接字符串并将它们显示在文本编辑器小部件中,以便客户可以轻松地将消息剪切并粘贴到电子邮件中。

或者,您可以尝试现有的邮件追加器。将其配置为仅响应错误,并让它将错误直接发送给您。但我建议确保您的邮件提供商能够处理这个问题 - 我们有一个案例,软件中的一个错误导致一夜之间发送了超过 70'000 封邮件。之后,我们了解到Outlook无法处理这么多邮件。

相关内容

最新更新