複雑なアプリケーションを作成しましたが、テスターの助けを借りてデバッグする必要があります。私が今直面している問題は、ソフトウェアの使用中にどのような例外が発生したかを知ることができないことです。ユーザーがアプリケーションまたはアプレットを使用しているときに、コンソール ストリームを取得して別のウィンドウにメッセージを表示する簡単な方法はありますか?
2 に答える
logbackと一緒にslf4jのようなロギング フレームワークを使用します。ログメッセージをさまざまな場所に保存するヘルパーである、数十の異なる「アペンダー」を提供します。
あなたのユース ケースでは、スレッド セーフ リストに最後の 100 件のメッセージを収集する新しいアペンダーを作成することをお勧めします。
ルート ロガーにアタッチします (ドキュメントを参照してください)。
エラーまたは例外がログに記録されている場合、リストからすべてのメッセージを取得し、文字列に変換します。を使用する場合は、このためのエンコーダーを作成しlogback
ます。
文字列を結合し、テキスト エディター ウィジェットに表示して、クライアントがメッセージを簡単にカット アンド ペーストしてメールに挿入できるようにします。
または、既存のメール アペンダーを試すこともできます。エラーにのみ応答するように構成し、エラーを直接送信するようにします。ただし、メール プロバイダーがこれを処理できることを確認することをお勧めします。ソフトウェアのバグにより、一晩で 70,000 件を超えるメールが送信されたというケースがありました。その後、Outlook ではそれほど多くのメールを処理できないことがわかりました。
アプリケーションの起動時にすべてのコンソール メッセージをファイル (または他のストリーム) にリダイレクトし、ファイルの内容を参照して get Exception を探すことができます。
FileOutputStream fos = new FileOutputStream("log.txt");
PrintStream out = new PrintStream(fos);
System.setOut(out);
System.setErr(out);
System.out.println("Logged to file");