2

SDカードにテキストファイルを作成する必要があり、例外が発生した場合はアプリケーション全体で毎回テキストファイルにログインする必要があります。すべてがスレッドで発生する必要があります。

いくつかの場所で、実行中のスレッドがあり、例外が発生します。この場合、このスレッドから新しいスレッドを開始してログに記録するにはどうすればよいですか。

私の質問: 新しいスレッドからのすべての例外をログに記録するにはどうすればよいですか。別のスレッドから新しいスレッドを開始できますか。スレッドを複数回実行することは推奨されていませんが、すべてのログをファイルに書き込むために同じスレッドを使用したい場合、スレッドを破棄するにはどうすればよいですか。log4jを使わずにこれを行うことは可能ですか?

4

1 に答える 1

3

次のように、アプリケーション全体のワークキューを備えた専用スレッドを用意することをお勧めします。

class Logging {
    public static ExecutorService logger = Executors.newSingleThreadExecutor();
}

次に、例外がキャッチされた場合:

try {
   ...
} catch(Exception ex) {
   Logging.logger.submit(new LoggingJob(ex));
}

LoggingJob次のような場所になります。

class LoggingJob implements Runnable {
    private Exception ex;

    public LoggingJob(Exception ex) {
        this.ex = ex;
    }

    public void run() {
        // write ex to log file
    }
}
于 2012-09-27T13:43:23.297 に答える