java logger 单个文件 多个 类

java logger single file multiple classes

我有三个 classes,我想将日志添加到共享的单个文件中。 所以每个 class 的构造函数都有一个

        fh = new FileHandler("log.txt", true);
        LOGGER_A.addHandler(fh);
        SimpleFormatter formatter = new SimpleFormatter();  
        fh.setFormatter(formatter); 
    }
    catch (IOException ex) {
    }

     fh = new FileHandler("log.txt", true);
        LOGGER_B.addHandler(fh);
        SimpleFormatter formatter = new SimpleFormatter();  
        fh.setFormatter(formatter); 
    }
    catch (IOException ex) {
    }

当我 运行 第二个构造函数时,它会创建一个名为 "log.txt.1" 的新文件。 如何避免这种情况,我想对所有 classes 使用 log.txt 文件。

我认为你在这里提出的问题实际上是一个特征。

来自https://docs.oracle.com/javase/8/docs/api/java/util/logging/FileHandler.html

For a rotating set of files, as each file reaches a given size limit, it is closed, rotated out, and a new file opened. Successively older files are named by adding "0", "1", "2", etc. into the base filename.

因此,正如我所见,您所要做的就是更改日志文件的大小限制:)

将相同的 FileHandler 对象添加到您的两个记录器。

FileHandler 将尝试锁定文件名,这样其他 FileHandler 就无法使用同一个文件。如果 FileHandler 无法获得锁,它会在文件名末尾追加递增的数字,直到获得文件的唯一锁。由于您的第一个 FileHandler 已经锁定 log.txt,第二个 FileHandler 无法获得相同的锁定。

不要忘记在 FileHandler 记录后关闭文件。

使用 FileHandler 的关闭方法 Class: