Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java logger单文件多类_Java_Logging_Filehandler - Fatal编程技术网

java logger单文件多类

java logger单文件多类,java,logging,filehandler,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_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文件。

我认为您在这里提出的问题实际上是一个特性

对于旋转的文件集,当每个文件达到给定的大小限制时,它将关闭、旋转并打开一个新文件。通过将“0”、“1”、“2”等添加到基本文件名中,依次命名较旧的文件


因此,在我看来,您所要做的就是更改日志文件的限制大小:)

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


FileHandler将尝试锁定文件名,以便其他FileHandler不能使用相同的文件。如果FileHandler无法获得锁,它会在文件名的末尾追加递增的数字,直到获得文件的唯一锁为止。由于您的第一个FileHandler已在log.txt上拥有锁,因此第二个FileHandler无法获得相同的锁。

请不要忘记在FileHandler登录后关闭该文件

使用FileHandler类中的close方法:


还要确保使用Java 8。中的一条评论说,处理程序在8点之前存在线程安全缺陷。