Я пытаюсь использовать 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
Очистка кэша загрузчика классов исправляет его, и я знаю, что мне нужно очистить кэш загрузчика классов, чтобы фактически перезагрузить апплет, но иногда я просто хочу перезапустить его, особенно при отладке. Поэтому я хотел бы понять:
- Почему это происходит?
- Есть ли способ предотвратить это?
Спасибо!