java logger单文件多个类

时间:2018-01-15 16:41:40

标签: java logging filehandler

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

        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”的新文件。 如何避免这种情况,我想对所有类使用log.txt文件。

3 个答案:

答案 0 :(得分:2)

将同一个FileHandler对象添加到两个记录器中。

FileHandler将尝试锁定文件名,因此其他FileHandler不能使用同一文件。如果FileHandler无法获取锁定,它会将越来越多的数字附加到文件名的末尾,直到它获得对文件的唯一锁定。由于您的第一个FileHandler已经锁定了log.txt,因此第二个FileHandler无法获得相同的锁定。

答案 1 :(得分:1)

我认为你在这里提出的问题其实是一个功能。

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

  

对于一组旋转文件,当每个文件达到给定的大小限制时,它将被关闭,旋转并打开一个新文件。通过在基本文件名中添加" 0"," 1"," 2"等来命名旧文件。

所以,我认为你要做的就是更改日志文件的限制大小:)

答案 2 :(得分:0)

别忘了在FileHandler登录后关闭文件。

使用FileHandler类中的close方法:

相关问题