从Java中的多个线程记录错误

时间:2018-04-24 21:40:10

标签: java multithreading logging

我使用内置的Java记录器将错误(在try-catch语句中捕获)记录到文本文件中。

我的一个记录器正由多个线程访问。每个线程都正确写入,但问题是当两个线程同时尝试写入时,其中一个线程最终会创建一个新文件,因此我最终得到两个文件log.txtlog.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);
    }

0 个答案:

没有答案