Angenommen, ich habe drei Klassen A, B und C, die in separaten Threads (tA, tB und tC) arbeiten und alle von ihnen haben auch ihre eigene Instanz Logger
.Java: Logging für mehrere Threads mit Log4j2
Jetzt habe ich ein Chaos in der Ausgabe, weil es keine Reihenfolge in den Aufzeichnungen der drei Klassen gibt. Gibt es eine Möglichkeit, die Loggings in der Reihenfolge ihres Auftretens zu sortieren?
Zum Beispiel:
class A {
public static final Logger LOGGER = LoggerFactory.getLogger(A.class);
public void start() {
LOGGER.info("TestA");
LOGGER.info("TestA");
LOGGER.info("TestA");
}
}
class B {
public static final Logger LOGGER = LoggerFactory.getLogger(B.class);
public void start() {
LOGGER.info("TestB");
LOGGER.info("TestB");
LOGGER.info("TestB");
}
}
class A {
public static final Logger LOGGER = LoggerFactory.getLogger(C.class);
public void start() {
LOGGER.info("TestC");
LOGGER.info("TestC");
LOGGER.info("TestC");
}
}
Ausgang:
TestA
TestA
TestB
TestB
TestA
TestC
TestC
TestB
TestC
Was ich will, ist:
TestA
TestA
TestA
TestB
TestB
TestB
TestC
TestC
TestC
Was meinst du, es gibt keine Reihenfolge? Fügen Sie Ihrer Protokollausgabe keine Zeitstempel hinzu? Und Threads per Definition laufen async voneinander ab, das ist ihr Zweck. Bitte veröffentlichen Sie ein Beispiel für Ihre Ausgabe und wie die Ausgabe angezeigt werden soll. – Tschallacka
Wenn Ihre Anforderung serielle Ausführung und somit serielle Protokolle sind, dann verwenden Sie Threading nicht, führen Sie sie sequentiell wie 'new A(). Start(); new B(). start() 'so weiter –