gpt4 book ai didi

java - 使用 log4j 时 java applet 中的重复行

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:43 24 4
gpt4 key购买 nike

我试图在小程序中使用 log4j,但每次我在浏览器中刷新页面(以重新启动小程序)时,我都会在 Java 控制台中得到重复的输出行。每次刷新后输出重复的次数增加。

这段代码重现了效果:

public class HelloWorldApplet extends JApplet {
static Logger logger = Logger.getLogger(HelloWorldApplet.class);
public void init() {
BasicConfigurator.configure();
logger.info("Hello log4j");
System.out.println("Hello System.out");
}
}

这是我看到的输出:

0 [thread applet-HelloWorldApplet.class-26] INFO HelloWorldApplet  - Hello log4j
Hello System.out
<refresh>
1987 [thread applet-HelloWorldApplet.class-27] INFO HelloWorldApplet - Hello log4j
1987 [thread applet-HelloWorldApplet.class-27] INFO HelloWorldApplet - Hello log4j
Hello System.out
<again>
3156 [thread applet-HelloWorldApplet.class-28] INFO HelloWorldApplet - Hello log4j
3156 [thread applet-HelloWorldApplet.class-28] INFO HelloWorldApplet - Hello log4j
3156 [thread applet-HelloWorldApplet.class-28] INFO HelloWorldApplet - Hello log4j
Hello System.out

清除类加载器缓存可以修复它,我知道我需要清除类加载器缓存才能真正重新加载小程序,但有时我只想重新启动它,尤其是在调试时。所以我想明白:

  1. 为什么会这样?
  2. 有什么办法可以避免吗?

谢谢!

最佳答案

来自 BasicConfigurator: 的 javadocs

public static void configure()

Add a ConsoleAppender that uses PatternLayout using the PatternLayout.TTCC_CONVERSION_PATTERN and prints to System.out to the root category.

因此,每次初始化 applet 时,您都会添加一个新的 appender。尝试先调用 resetConfiguration()

关于java - 使用 log4j 时 java applet 中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5843061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com