Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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 使用静态记录器打印元素是否正在创建具有相同内容的多个文件?_Java_Static - Fatal编程技术网

Java 使用静态记录器打印元素是否正在创建具有相同内容的多个文件?

Java 使用静态记录器打印元素是否正在创建具有相同内容的多个文件?,java,static,Java,Static,我使用了一个记录器来查看元素的值,现在我可以看到我的应用程序需要更多的时间来启动,当我看到日志时,预期的文件被创建了100多次 每个文件中都打印元素?是什么导致了这种行为 如果我们使用静态变量,并且该变量被应用程序中的许多方法使用,那么对于每个方法都会创建一个文件!!但是我知道静态变量是用于所有访问对象的单个值 日志记录器的声明是 private static Logger telog = Logger.getLogger(XMLCIMHandler.class.getName());

我使用了一个记录器来查看元素的值,现在我可以看到我的应用程序需要更多的时间来启动,当我看到日志时,预期的文件被创建了100多次

每个文件中都打印元素?是什么导致了这种行为

如果我们使用静态变量,并且该变量被应用程序中的许多方法使用,那么对于每个方法都会创建一个文件!!但是我知道静态变量是用于所有访问对象的单个值

日志记录器的声明是

 private static Logger telog = Logger.getLogger(XMLCIMHandler.class.getName());
        FileHandler fh;
初始化是

try {
                File file = new File("C:\\TElogs");
                boolean b = file.mkdir();
                fh = new FileHandler("C:\\TElogs\\TElogs%u.%g.log",
                        1000000, 10);
                      telog.addHandler(fh);
                telog.setUseParentHandlers(false);
                SimpleFormatter formatter = new SimpleFormatter();
                fh.setFormatter(formatter);
            } catch (Exception e) {
                Writer writer = new StringWriter();
                PrintWriter printWriter = new PrintWriter(writer);
                e.printStackTrace(printWriter);
                String s = writer.toString();
                telog.info("  "+ s);
            }
并打印我使用的元素
TElog.info(元素)

请解释一下。。。提前感谢

问题可能是因为您在构造函数中初始化了记录器。这意味着该类的每个实例都将创建一个新文件


您需要在中初始化它,或者在初始化之前检查它是否已经初始化。

您有一些代码(和记录器配置)要共享吗?@Thilo谢谢。。。我有疑问地更新了它,或者,如果可能的话,用一个配置文件,根本不要用代码初始化它。是的,实际上这就是问题所在。现在我用一个单独的方法初始化它,然后在Java控制台中获取日志。您能建议如何将这些日志放入所需的文件中吗?谢谢。