Kennt jemand eine Dokumentation zum Logging?

  • Um Rückfragen vorzubeugen, bitten wir um folgende Angaben:

    • Thunderbird-Version: > 55.0a1
    • Betriebssystem + Version: n/a
    • Kontenart (POP / IMAP): IMAP
    • Postfach-Anbieter (z.B. GMX): n/a
    • Eingesetzte Antiviren-Software: n/a
    • Firewall (Betriebssystem-intern/Externe Software): n/a
    • Router-Modellbezeichnung (bei Sende-Problemen): n/a


    Hallo in die Runde,


    eine Stärke des Thunderbird ist das Logging. Ich bin auf der Suche nach einer Dokumentation dazu. Nicht zum Doing, sondern zum Lesen der Logs.


    Ich habe mir einen Mailserver eingerichtet (Dovecot). Das läuft bis auf ein paar Kleinigkeiten soweit prima.

    Nun habe ich mir die IMAP-Logs angeschaut. Wenn man weiß, wie IMAP und SMTP vom Prinzip her funktionieren, lassen sie sich auch für einen Nichtprofi in weiten Teilen lesen und verstehen.


    Die Sache wird nur dadurch etwas erschwert, dass gleichzeitig mehrere Verbindungen bestehen, die auch parallel benutzt werden. Die Logs geraten dadurch unübersichtlich. Ich frage mich deshalb, wie ich die Logs am besten grep-en kann.


    Hier ein Beispiel ohne Zeitstempel. Um mir eine Anonymisierung zu sparen, habe ich keine eigenen Logs verwendet, sondern aus Bugzilla kopiert.




    Ich vermute, ich kann eine bestimmte Verbindung anhand der ID (hier this=21122800 bzw. this=21125000) verfolgen? Sie taucht aber nicht in allen relevanten Zeilen auf.

    Weiß jemand, was die Zahlen wie 8088[1dad8600] oder 9864[1dad88a0] bedeuten? Die scheinen jeweils zu 21122800 und 21125000 zu passen.


    Super wäre ein Link auf eine Dokumentation dazu. Ich habe keine gefunden.


    Vielen Dank

  • Ich glaube nicht, dass es dazu eine Dokumentation gibt. Du kannst aber direkt den Code lesen, der die Meldungen ausgibt, für die erste Meldung z.B nsImapProtocol.cpp:1350. Das "this" ist also die Adresse der nsImapProtocol-Instanz, die die Meldung generiert hat. Die Zahlen am Anfang kommen von MOZ_LOG bzw. der Logging-Infrastruktur und identifizieren vermutlich das Modul, das die Meldung generiert sowie das Log-Level der Nachricht. Habe das nicht genau gelesen, Dokumentation zu dem Makro ist in Logging.h:204, zu den Konzepten gibt es einen MDN-Artikel.


    Links sind jeweils für Thunderbird 60.

  • Vielen Dank. Das ist mal ein interessanter Link. Dass man den Source Code per Web browsen kann, wusste ich nicht.


    Nun bin ich nicht gerade ein cpp-Guru. Über ein Hello World komme ich zwar hinaus, aber nicht sehr weit.

    Der Hinweis hat mir trotzdem geholfen.


    Code
    MOZ_LOG(IMAP, LogLevel::Debug, ("ImapThreadMainLoop entering [this=%p]\n", this));


    Die Übergabe des Zeigers auf this beantwortet meine erste Frage.


    Ich habe im Code auch nach dem jeweiligen Stream gesucht. Erst da ist mir aufgefallen, dass der Text "stream=" ja sogar mit ausgegeben wird. Peinlich.


    Code
    {
    newLine = m_inputStreamBuffer->ReadNextLine(m_inputStream, numBytesInLine, needMoreData, &rv);
    MOZ_LOG(IMAP, LogLevel::Debug, ("ReadNextLine [stream=%p nb=%u needmore=%u]\n",
    m_inputStream.get(), numBytesInLine, needMoreData));
    }



    Was auch immer MOZ-LOG() aus IMAP und LogLevel::Debug genau macht, der Output scheint mir für den grep zu genügen. Im obigen Beispiel gehören die Instanzadresse 21122800 und die 15b8b9c0 des Streams immer zu 8088[1dad8600]. Damit werde ich dann wohl alles erwischen, was zu einer bestimmten IMAP-Session gehört.


    Dabei ist mir klar geworden, dass ich nicht in jedem Fall auf den Stream grep-en möchte sondern je nach dem vielleicht auch auf eine ganze IMAP-Session.


    Danke für den Anschubser!