0

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

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

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

logger 的声明是

 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(element); 请解释...在此先感谢

4

1 回答 1

1

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

您需要在静态初始化块中对其进行初始化,或者在初始化之前检查它是否已经初始化。

于 2013-07-13T12:39:23.310 回答