我使用内置的Java记录器将错误(在try-catch
语句中捕获)记录到文本文件中。
我的一个记录器正由多个线程访问。每个线程都正确写入,但问题是当两个线程同时尝试写入时,其中一个线程最终会创建一个新文件,因此我最终得到两个文件log.txt
和log.txt.1
。
如何同步这些操作以便我不创建新文件?
作为参考,以下是我为相关课程设置记录器的方法:
// Set up the network logger
private void LoggerSetup() throws IOException{
Logger LOGGER = Logger.getLogger(ClientConnect.class.getName());
File path = new File("logs/");
File file = new File(path, "NetworkLogs.txt");
path.mkdirs();
if(!file.exists())
file.createNewFile();
FileHandler fileHandler;
SimpleFormatter formatter;
try {
fileHandler = new FileHandler(file.getPath(), true);
LOGGER.addHandler(fileHandler);
formatter = new SimpleFormatter();
fileHandler.setFormatter(formatter);
} catch (IOException | SecurityException ex) {
Logger.getLogger(ClientConnect.class.getName()).log(Level.SEVERE, null, ex);
}
}
以下是使用此记录器的示例:
catch (IOException e) {
Logger.getLogger(ClientConnect.class.getName()).log(Level.SEVERE, "ClientConnect", e);
}