JSON Logging & Datadog

Warum du JSON für das Logging verwenden solltest

Wenn du heute kein JSON-Logging benutzt, verlässt du dich wahrscheinlich auf Klartext-Logs und Regex, um sie zu verstehen. Das mag anfangs funktionieren, aber es wird anfangen zu brechen, Struktur verlieren und mit wachsender Systeme immer schlechter werden. JSON-Logging ist der Standard. In modernen Anwendungen ist es nicht mehr optional, strukturierte, leicht entschlüsselbare Logs. Es bietet ein gewisses Maß an Konsistenz zwischen den Diensten und bietet dennoch Flexibilität.

Datadog empfiehlt das JSON-Logging aus gutem Grund. Wenn Logs als gültiges JSON ausgegeben werden, parst der Preprozessor von Datadog Ihre Logs automatisch und ordnet sie einer Reihe reservierter Attribute zu, die den Overhead reduzieren und eine konsistente Feldextraktion gewährleisten. Es ist keine zusätzliche Konfiguration erforderlich, da diese reservierten Attribute die relevantesten Felder bereitstellen, die Integration mit anderen Systemen erleichtern, Logs filtern, effizient suchen und Benachrichtigungen einrichten. Wichtige reservierte Attribute umfassen Host, Service, Status, Trace ID, SPAN-ID und weitere, die für Observabilität und Fehlerbehebung unerlässlich sind.

Wie man es einrichtet

Meiner Erfahrung nach gab es eine Fülle von Ressourcen zur besten Konfiguration von JSON-Logging. Die Hauptreferenz, die ich verwendet habe, war die Dokumentation von Datadog: https://docs.datadoghq.com/logs/log_collection/java/?tab=logback. ich fand sie am besten, weil Datadog das primäre Observabilitätstool war, das wir verwendet haben, und sie leichter Fehler beheben konnten, falls Probleme auftreten.

Mit den Datadog-Dokumenten als Leitfaden begann ich damit , die logback-spring.xml-Konfigurationsdatei zu erstellen. Hier findet die meiste Arbeit statt. Anfangs habe ich mit verschiedenen JSON-Encodern experimentiert und Felder hinzugefügt, von denen ich dachte, sie könnten hilfreich sein. Schließlich erkannte ich die Kraft der Einfachheit: Eine saubere, minimalistische Konfiguration ist leichter zu warten und weniger wahrscheinlich zu brechen.

<springProfile name="json-logs">

        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
        </appender>

        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
        </root>

Nachdem ich die erforderlichen Logback-Abhängigkeiten hinzugefügt und diesen Code zu meiner logback-spring.xml-Datei hinzugefügt habe, ist der letzte große Schritt, 'json-logs' als aktives Spring-Profil in deiner Anwendungs-YAML einzustellen. Dies stellt sicher, dass JSON-Logging in Ihrer Umgebung aktiviert ist und über alle Dienste hinweg konsistent funktioniert.

Wenn diese Schritte korrekt befolgt wurden, sollten Sie Ihre Protokolle abschließen und die Ergebnisse sehen können. Sie sollten in einem Schlüssel-Wert-Logbuch ähnlich wie diesem sein:

{"@timestamp":"2025-1-13T13:02:27.512333-02:00","@version":"1","message":"Tomcat initialized with port 8080(http)",
"logger_name":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","thread_name":"main","level":"INFO",
"level_value":20000,"appName":"json-logs"}  

An diesem Punkt sollten deine Logs in Datadog strukturiert sein, die Trace-Korrelation sollte für Logs mit Trace-IDs funktionieren, und du solltest detailliertere und konsistentere Attribute sehen.

Häufige Fehler und Ratschläge

Mit der richtigen Einrichtung wird das JSON-Logging in Datadog zuverlässig und viel einfacher zu warten. Indem Sie Altannahmen entfernen und Ihre Konfiguration einfach halten, erhalten Sie strukturierte Logs, konsistente Felder, Trace-Korrelation sowie einfachere Filterung und Benachrichtigungen. JSON-Logging ist nicht nur eine Best Practice; Sie ist unerlässlich, um die Beobachtbarkeit in modernen Anwendungen zu verbessern.

Über den Autor

Chase Hollander
AEM-Entwickler bei Arbory Digital

Agile Certified Professional, Entwickler und Berater mit Erfahrung im AEM

Kontaktieren Sie Chase auf Linkedin

Gefällt dir, was du gehört hast? Haben Sie Fragen dazu, was für Sie am besten ist? Wir würden uns sehr freuen! Kontaktieren Sie uns

Verwandte Artikel

category
AEM Technical Help
tags
number of rows
1