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