Ich werde versuchen, eine kurze Beschreibung meines Selenium-Rahmens zu geben, damit ich mein Problem erklären kann.
Ich verwende Selenium 2 (aktuelle Version 2.3.1) + testNG 5.14
Ich habe die Datei testng.xml so eingerichtet, dass die Tests in der Testsuite parallel ausgeführt werden, nur zwei Instanzen
Für Protokollierungszwecke verwende ich logback (ich habe gelesen, das ist die nächstbeste Sache in der Log-Welt)
Mein Problem ist, dass ich beim Überprüfen der Protokollierung der Anwendung Folgendes bekomme:
18: 48: 58.551 [TestNG] INFO d.a.a.s.t.setup.TestConfiguration - Abrufen eines zufälligen Benutzers aus dem Benutzerpool
18: 48: 58.551 [TestNG] INFO d.a.a.s.t.setup.TestConfiguration - Abrufen eines zufälligen Benutzers aus dem Benutzerpool
18: 48: 58.551 [TestNG] DEBUG d.aa.a.s.t.setup.TestConfiguration - DataSource für die Abarbeitung der DataBase anlegen
18: 48: 58.551 [TestNG] DEBUG d.aa.a.s.t.setup.TestConfiguration - DataSource für die Abarbeitung der DataBase anlegen
18: 48: 58.552 [TestNG] DEBUG d.a.a.s.t.setup.TestConfiguration - Starten der SQL-Abfrage
18: 48: 58.552 [TestNG] DEBUG d.a.a.s.t.setup.TestConfiguration - Starten der SQL-Abfrage
18: 48: 59.613 [TestNG] TRACE d.a.a.s.t.setup.TestConfiguration - Abfrage erfolgreich
18: 48: 59.613 [TestNG] TRACE d.a.a.s.t.setup.TestConfiguration - Abfrage erfolgreich
Wie Sie sehen können, ist es unmöglich, den Unterschied zwischen den zwei Threads zu sehen, die gleichzeitig ausgeführt werden. Meine Frage ist, gibt es eine Möglichkeit, die Logbucheinstellungen so zu konfigurieren, dass sie auch eine Nummer oder Id hinzufügen, um jeden laufenden Thread zu identifizieren?
PD Nur für den Fall, dass es helfen könnte, sieht meine logback.xml -Datei wie folgt aus:
%Vor%Danke für Ihre Hilfe =)
} Allheilmittel {
Logback Diagnosekontext zugeordnet (MDC) ist Ihr Freund. Es ermöglicht das Hinzufügen von Thread-lokalen Variablen, die verwaltet, zwischen Threads kopiert und mit einem Protokollierungsformat protokolliert werden können.
Aus der Dokumentation:
Eines der Entwurfsziele von Logback besteht darin, komplexe verteilte Anwendungen zu prüfen und zu debuggen. Die meisten verteilten Systeme in der realen Welt müssen gleichzeitig mit mehreren Clients arbeiten. In einer typischen Multithread-Implementierung eines solchen Systems werden verschiedene Threads unterschiedliche Clients behandeln. Ein möglicher, aber etwas entmutigter Ansatz, um die Protokollierungsausgabe eines Clients von einem anderen zu unterscheiden, besteht darin, für jeden Client einen neuen und separaten Protokollierer zu instanziieren. Diese Technik fördert die Verbreitung von Loggern und kann den Verwaltungsaufwand erhöhen.
Eine leichtere Technik besteht darin, jede Protokollanforderung, die einen bestimmten Client bedient, eindeutig zu markieren. Neil Harrison beschrieb diese Methode in dem Buch Patterns for Logging Diagnostic Messages in Pattern Languages von Program Design 3, herausgegeben von R. Martin, D. Riehle und F. Buschmann (Addison-Wesley, 1997). Logback nutzt eine Variante dieser Technik, die in der SLF4J-API enthalten ist: Mapped Diagnostic Contexts (MDC).
Um jede Anfrage eindeutig zu stempeln, fügt der Benutzer Kontextinformationen in das MDC, die Abkürzung für den zugeordneten Diagnosekontext, ein. Die hervorstechenden Teile der MDC-Klasse sind unten gezeigt. Eine vollständige Liste der Methoden finden Sie im MDC javadocs .
Wenn Sie eine Alternative zu den unvorhersehbaren Namen möchten, die Sie mit% thread bekommen, wie ich es normalerweise tue, können Sie einfache thread-lokale IDs verwenden. Es ist viel einfacher für die Augen. Dies funktioniert mit Logback ...
%Vor%Dann fügen Sie diese einfache Zeile in Ihr Logback-XML ein:
%Vor%Setze dein Muster so (notice "tid"):
%Vor%Und Ihre Protokolle werden wie folgt aussehen:
%Vor%Sie können dies mit jedem Logger tun, der benutzerdefinierte Erweiterungen unterstützt. Hoffe es hilft.
Tags und Links multithreading logback webdriver testng