Java Logging
In der Java-Laufzeit werden alle Ausgaben an STDOUT
oder STDERR
an Cloud Logging weitergegeben. Die detaillierte Wichtigkeitsstufe des Logs wird jedoch nicht weitergegeben. Verwenden Sie die standardmäßige Java Logging API (JUL), um Nachrichten zu protokollieren und die richtigen Wichtigkeitsstufen für Logs an Cloud Logging weiterzugeben.
Wenn Sie ein anderes Logging-Framework wie SLF4J, Log4j 2 oder Apache Commons Logging verwenden, können Sie die korrekte Wichtigkeitsstufe des Logs so weitergeben:
- Formatieren Sie die Logeinträge im JSON-Format für strukturiertes Logging, damit die Wichtigkeitsstufe an Cloud Logging weitergegeben wird.
- Senden Sie mit einer Bridge/einem Adapter Logeinträge an die Java Logging API senden, die die Logeinträge bereits im richtigen Format weitergibt. Achten Sie bei diesem Ansatz darauf, dass nicht bereits ein Adapter vorhanden ist, der von der Java Logging API an das Logging-Framework routet.
Wenn Ihre Funktion verschiedene Bibliotheken und diese Bibliotheken unterschiedliche Logging-Frameworks verwenden, müssen Sie jedes der verwendeten Logging-Frameworks konfigurieren. In den folgenden Abschnitten werden einige der verschiedenen Optionen behandelt.
Spring Cloud Run Function
Wenn Sie Spring Cloud Run Function mit dem Spring Cloud Run Functions-Google Cloud-Adapter verwenden, können Sie das Log mit dem Google Cloud Logging Starter von Spring Cloud im richtigen Format und dem CONSOLE_JSON
-Appender im JSON-Format ausgeben. Spring verwendet standardmäßig SLF4J und Logback. Sie können jedoch auch SLF4J-Logs an die Java Logging API weiterleiten. Weitere Informationen finden Sie im Abschnitt SLF4J.
Java Logging API (JUL)
Alle unterstützten Cloud Run Functions-Java-Umgebungen enthalten Java Logging mit einem JSON-Handler, der das Log im richtigen Format ausgibt. Einige Java-Frameworks fügen möglicherweise zusätzliche Komponenten hinzu, um JUL mit einem anderen Logging-Framework zu verbinden, beispielsweise die jul-to-slf4j-Bridge oder den Log4j JDK Logging Adapter. In diesem Fall werden diese Logeinträge nicht mehr richtig formatiert. Wenn Ihre Logeinträge nicht die richtigen Wichtigkeitsstufen haben, achten Sie darauf, dass diese Bridges entfernt werden.
SLF4J
SLF4J kann Logs über die Logging-Framework-Bindung slf4j-jdk14
in die Java Logging API schreiben. Weitere Informationen finden Sie in der SLF4J-Dokumentation. Achten Sie darauf, dass Sie nicht die jul-to-slf4j
-Bridge haben.
Logback
Logback hat keinen Appender, der Logeinträge an die Java Logging API weiterleitet. Logback wird jedoch normalerweise mit der SFL4J API verwendet, sodass Sie die SLF4J-Logger-Implementierung auf die Java Logging API umstellen können.
Log4j 2
Log4j 2 hat keinen direkten Adapter, der Logeinträge an die Java Logging API weiterleitet. Wenn Sie Log4j 2 verwenden, müssen Sie zuerst Nachrichten mit dem Log4J 2-zu-SLF4J-Adapter an SLF4J weiterleiten und dann SLF4J für die Verwendung der Java Logging API-Implementierung konfigurieren. Achten Sie darauf, dass Sie nicht den Log4j JDK Logging-Adapter haben.
Apache Commons Logging (JCL)
Apache Commons Logging hat einen Java Logging API-Adapter. Konfigurieren Sie Commons Logging für Jdk14Logger. Weitere Informationen finden Sie auf der Seite Apache Commons Logging-Konfiguration.