Ich versuche, log4j in einem Applet zu verwenden, aber jedes Mal, wenn ich die Seite im Browser aktualisiere (um das Applet neu zu starten), erhalte ich doppelte Zeilen der Ausgabe in der Java-Konsole. Die Anzahl der duplizierten Ausgaben erhöht sich nach jeder Aktualisierung.
Dieser Code reproduziert den Effekt:
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");
}
}
Und das ist die Ausgabe, die ich sehe:
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
Das Löschen des Classloader-Caches behebt das Problem, und ich weiß, dass ich den Classloader-Cache löschen muss, um ein Applet tatsächlich neu zu laden, aber manchmal möchte ich es einfach neu starten, vor allem beim Debuggen. Ich würde also gerne verstehen:
- Warum ist das so?
- Gibt es eine Möglichkeit, dies zu verhindern?
Gracias.