Blog

Wie Sie die Fehlerprotokolle in der Google-Fehlerberichterstattung sichtbar machen

Mark van Holsteijn

Aktualisiert Oktober 15, 2025
3 Minuten

Möchten Sie wissen, wie Sie Ihre Fehlerprotokolle in Google Error Reporting erscheinen lassen können? In diesem Blog zeige ich Ihnen, wie Sie die Protokollierung Ihrer Anwendung so konfigurieren, dass in Google Cloud Logging protokollierte Fehler automatisch in Google Error Reporting erscheinen: Durch die Konfiguration der strukturierten Protokollierung und das Hinzufügen von zwei Eigenschaften zum Protokolldatensatz lässt sich diese Integration schnell bewerkstelligen.

Google Fehlerberichterstattung

Google Error Reporting ist ein netter Dienst, der in Ihren Anwendungen entdeckte Fehler sammelt und eine schnelle Reaktion und Lösung ermöglicht.

fehler-berichterstattung.jpg

Hier ist der Grund, warum ich sie für unschätzbar halte:

  • Es bietet einen schnellen Einblick in verschiedene Fehlertypen.
  • Es unterstützt Benachrichtigungen für neue Fehler über verschiedene Kanäle hinweg.
  • Es ermöglicht die direkte Verknüpfung mit Tickets in Incident Management Systemen.

Benachrichtigungen können an verschiedene Kanäle gesendet werden, von SMS und Slack bis hin zur Google Cloud App. Kurz gesagt, es bietet eine sofort einsatzbereite Unterstützung für das Incident Response Management.

Fehlerprotokolle erscheinen nicht in der Fehlerberichterstattung

Die Protokolle aller unserer Anwendungen, die in Google Cloud laufen, werden bereits erfasst und in Google Cloud Logging geschrieben. Wann immer eine Ausnahme im Protokoll auftaucht, wird sie automatisch von Google Error Reporting erkannt. Aber es gibt einen Haken: Fehler, die von der Anwendung protokolliert werden, ohne dass eine Ausnahme ausgelöst wird, erscheinen nicht in der Fehlerberichterstattung.

Protokoll der gemeldeten Fehlerereignisse

Der Dokumentation zufolge können Fehler über die Google Error Reporting API oder durch das Schreiben eines ReportedErrorEvent-Datensatzes in das Protokoll gemeldet werden. Der direkte Aufruf der API ist nicht ideal, da der Fehler dadurch im Protokoll dupliziert wird. Stattdessen habe ich entdeckt, dass das Hinzufügen von serviceContextund reportLocation zum Protokolleintrag es Error Reporting ermöglicht, den Fehler zu erkennen.

Als ich mich mit der Google Cloud Logging Python-Bibliothek beschäftigte, fand ich heraus, dass der Google Cloud Logging-Handler auf das json_fields -Attribut des Log-Datensatzes reagiert und diese Felder automatisch in die strukturierte Log-Ausgabe einfügt.

Fügen Sie den Fehlerkontext als json-Felder hinzu

Jetzt wissen Sie also, was Sie tun müssen: Fügen Sie einfach die erforderlichen JSON-Felder zum Protokolldatensatz hinzu, wie in diesem Codeschnipsel gezeigt:

def addErrorContextFilter(record: logging.LogRecord) ->bool:  
    """  
    adds the attribute `json_fields` to the LogRecords of severity ERROR 
    to ensure that the log is detected by Google Error Reporting.    
    """
    if record.levelno >= logging.ERROR:  
        setattr(  
            record,  
            "json_fields",  
            {  
                "serviceContext": {"service": "demo", "version": "1.0"},  
                "context": {  
                    "reportLocation": {  
                        "filePath": record.pathname,  
                        "lineNumber": record.lineno,  
                        "functionName": record.funcName,  
                    }  
                },  
            },  
        )  
    return True  

Natürlich sollten Sie den Namen und die Version des Dienstes Ihrer Anwendung auf etwas intelligentere Weise angeben. Jetzt müssen Sie nur noch den Filter zum Standard-Logger hinzufügen.

Python Logging für die Verwendung von Google Logging einrichten

Der folgende Codeschnipsel zeigt, wie Sie die strukturierte Protokollierung in Python einrichten und den Filter für den Fehlerkontext hinzufügen.

import google.cloud.logging_v2
import logging

def main():  
    ##Setup the Python error logging to use Google Cloud Logging  
    credentials, project = gcloud_config_helper.default()  
    client = google.cloud.logging_v2.Client(
                    project=project, 
                    credentials=credentials)
    client.setup_logging(log_level=logging.INFO)  

    ## Now add the ErrorContext filter  
    logging.getLogger().addFilter(addErrorContextFilter)

Fazit

Mit nur ein paar Zeilen Code können Sie dafür sorgen, dass jedes Fehlerprotokoll in Google Error Reporting erscheint. Idealerweise könnte Google dies standardmäßig in die Standardbibliothek aufnehmen, um den Prozess noch weiter zu vereinfachen.


Bild von Michael Geiger aus Pixabay

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.