Protokolldateien sind ein wichtiger Bestandteil jeder seriösen Anwendung: Wenn die Protokollierung in der App fehlerfrei ist, können Sie sehen, welche Schlüsselereignisse wann stattgefunden haben. welche Fehler sind aufgetreten; und allgemeiner Anwendungszustand, der über die Überwachung hinausgeht. Es ist üblich, von einem Problem zu hören, die integrierte Diagnose der Anwendung zu überprüfen (die Webkonsole zu öffnen oder ein Diagnosetool wie JMX zu verwenden) und dann das zu überprüfen Protokolldateien.
Wenn Sie ein Nicht-Text-Format verwenden, stehen Sie sofort vor einer Hürde: Wie lesen Sie die Binärprotokolle? Mit dem Tool zum Lesen von Protokollen, das sich nicht auf Ihren Produktionsservern befindet! Oder es ist, aber oh je, wir haben ein neues Feld hinzugefügt und dies ist der alte Leser. Haben wir das nicht getestet? Ja, aber niemand hat es hier eingesetzt. In der Zwischenzeit beginnt Ihr Bildschirm zu leuchten, und Benutzer rufen Sie an.
Oder ist das vielleicht nicht deine App, aber du machst Support und glaubst zu wissen, dass es sich um dieses andere System und WTF handelt? Die Protokolle sind in einem binären Format? Ok, fang an Wiki-Seiten zu lesen und wo fängst du an? Jetzt habe ich sie auf meinen lokalen Computer kopiert, aber - sind sie beschädigt? Habe ich eine nicht-binäre Übertragung durchgeführt? Oder ist das Tool zum Lesen von Protokollen durcheinander?
Kurz gesagt, Textlesetools sind plattformübergreifend und allgegenwärtig, und Protokolle sind oft langlebig und müssen manchmal in Eile gelesen werden . Wenn Sie ein Binärformat erfinden, sind Sie von einer ganzen Welt gut verständlicher und benutzerfreundlicher Werkzeuge abgeschnitten. Schwerwiegender Funktionsverlust genau dann, wenn Sie ihn benötigen.
Die meisten Protokollierungsumgebungen machen einen Kompromiss: Halten Sie die aktuellen Protokolle lesbar und aktuell und komprimieren Sie die älteren. Das heißt, Sie profitieren von der Komprimierung - vor allem, weil ein Binärformat die Protokollnachrichten nicht verkleinert. Gleichzeitig können Sie weniger und grep und so weiter verwenden.
Welchen möglichen Nutzen könnte die Verwendung von Binärdateien bringen? Geringe Raumeffizienz - immer unwichtiger. Weniger (oder kleiner) schreibt? Nun, vielleicht - tatsächlich wird sich die Anzahl der Schreibvorgänge auf die Anzahl der Festschreibungen auf der Festplatte beziehen. Wenn also die Protokollzeilen erheblich kleiner als die Blockgröße der Festplatte sind, würde eine SSD ohnehin immer wieder neue Blöcke zuweisen. Binär ist also eine geeignete Wahl, wenn:
- Sie schreiben große Mengen strukturierter Daten
- Die Protokolle müssen besonders schnell erstellt werden
- Es ist unwahrscheinlich, dass Sie sie unter "Support-Bedingungen" analysieren müssen.
Dies klingt jedoch weniger nach Anwendungsprotokollierung. Dies sind Ausgabedateien oder Aktivitätsdatensätze. Das Einfügen in eine Datei ist wahrscheinlich nur einen Schritt vom Schreiben in eine Datenbank entfernt.
BEARBEITEN
Ich denke, hier gibt es eine allgemeine Verwechslung zwischen "Programmprotokollen" (gemäß Protokollierungsrahmen) und "Datensätzen" (wie in Zugriffsprotokollen, Anmeldungsdatensätzen usw.). Ich vermute, die Frage hängt am engsten mit letzterer zusammen, und in diesem Fall ist die Frage weit weniger genau definiert. Es ist durchaus akzeptabel, dass ein Nachrichtendatensatz oder ein Aktivitätsprotokoll in einem kompakten Format vorliegt, zumal es wahrscheinlich genau definiert ist und eher zur Analyse als zur Fehlerbehebung verwendet wird. Dazu gehören Tools tcpdump
und der Unix-Systemmonitor sar
. Programmprotokolle sind dagegen eher ad hoc.