我有一个要求,我必须在 sd 卡中创建一个文本文件,然后每次在应用程序中遇到任何异常时,我都必须将其记录到文本文件中。一切都应该发生在一个线程中。
在某些地方,我有一个线程正在运行,这给出了一些异常,在这种情况下,我如何从这个线程启动一个新线程来记录。
我的问题:如何从新线程记录每个异常。我们可以从其他线程开始一个新线程吗?如果我想使用同一个线程将每个日志写入文件,我该如何销毁线程,尽管我知道不建议多次运行一个线程。是否可以在不使用 log4j 的情况下执行此操作。
我有一个要求,我必须在 sd 卡中创建一个文本文件,然后每次在应用程序中遇到任何异常时,我都必须将其记录到文本文件中。一切都应该发生在一个线程中。
在某些地方,我有一个线程正在运行,这给出了一些异常,在这种情况下,我如何从这个线程启动一个新线程来记录。
我的问题:如何从新线程记录每个异常。我们可以从其他线程开始一个新线程吗?如果我想使用同一个线程将每个日志写入文件,我该如何销毁线程,尽管我知道不建议多次运行一个线程。是否可以在不使用 log4j 的情况下执行此操作。
我建议您为整个应用程序设置一个带有工作队列的专用线程,如下所示:
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
}
}