0

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

4

2 回答 2

1

将slf4j 之类的日志框架与logback一起使用。它提供了数十种不同的“附加器”——将日志消息保存在不同位置的助手。

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

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

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

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

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

于 2013-11-05T08:16:24.657 回答
1

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

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

    System.out.println("Logged to file");
于 2013-11-05T08:42:39.123 回答