Sie können Logs von Java-Anwendungen mit dem Logback-Appender oder mit einem java.util.logging-Handler in Cloud Logging schreiben. Dies ist auch direkt über die Cloud Logging-Bibliothek für Java möglich.
Der Cloud Logging-Agent muss nicht installiert sein, um die Cloud Logging-Bibliothek für Java verwenden zu können.
Hinweis
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Logging API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Logging API.
Logback-Appender für Cloud Logging
Wenn Sie mit dem Logback-Appender arbeiten, können Sie Cloud Logging mit der SLF4J-Logging-Fassade verwenden.
Abhängigkeit installieren
If you are using Maven, add
the following to your pom.xml
file. For more information about
BOMs, see The Google Cloud Platform Libraries BOM.
If you are using Gradle, add the following to your dependencies:
If you are using sbt, add the following to your dependencies:
Logback-Konfiguration
Logback kann programmgesteuert oder mit einem in XML oder Groovy geschriebenen Skript konfiguriert werden.
Sie können den unteren Wichtigkeitsschwellenwert oder den Lognamen anpassen oder zusätzliche Enhancer bereitstellen. Dies ist ein Beispiel für eine Logback-Konfiguration im XML-Format:
Beispiel
Nachdem Sie Logback für die Verwendung des Cloud Logging Logback-Appenders konfiguriert haben, können Sie Logs mithilfe der SLF4J Logging API weiterleiten. Geben Sie die Google Cloud-Konfiguration an, wenn Sie das Beispiel lokal oder außerhalb von Google Cloud ausführen möchten. Dieses Snippet zeigt das Logging mit der SLF4J-Fassade in Ihrer Anwendung:
java.util.logging-Handler
Sie können die Cloud Logging API auch mithilfe eines standardmäßigen Java Logging API-Handlers verwenden.Abhängigkeit installieren
If you are using Maven with
a BOM, add the following to your pom.xml
file:
If you are using Maven without a BOM, add this to your dependencies:
If you are using Gradle, add the following to your dependencies:
If you are using sbt, add the following to your dependencies:
If you're using Visual Studio Code, IntelliJ, or Eclipse, you can add client libraries to your project using the following IDE plugins:
The plugins provide additional functionality, such as key management for service accounts. Refer to each plugin's documentation for details.
java.util.logging-Konfiguration
Logging-Handler können programmgesteuert oder mit einer Konfigurationsdatei hinzugefügt werden.
Der Pfad zur Konfigurationsdatei muss Ihrer Anwendung als Systemattribut übergeben werden:
-Djava.util.logging.config.file=/path/to/logging.properties
Hier ist ein Beispiel für eine Konfigurationsdatei:
Beispiel
Geben Sie die Google Cloud-Konfiguration an, wenn Sie das Beispiel lokal oder außerhalb von Google Cloud ausführen möchten.
Dieses Snippet zeigt das Logging mit java.util.logging
:
Gängige Konfiguration
In den folgenden Abschnitten geht es um die gängige Konfiguration für den Handler java.util.logging
und den Logback-Appender für Cloud Logging.
Standardeinstellungen
Für den Logback-Appender und den java.util.logging
-Handler gelten die folgenden Standardwerte zur Instanziierung eines Cloud Logging-Clients:
Logname:
java.log
Unterer Schwellenwert für das Logging:
INFO
Löschwichtigkeit:
ERROR
Die Cloud Logging-Bibliothek für Java fasst Nachrichten je nach Größe und Zeitangabe seit dem letzten Schreibvorgang in Batches zusammen. Batches mit Logging-Anfragen, die mindestens die Löschwichtigkeit aufweisen, werden sofort ausgeschrieben.
Erkennung überwachter Ressourcen
Bei allen Logs, die über die Cloud Logging-Bibliotheken gesendet werden, ist ein überwachter Ressourcentyp erforderlich, durch den Ihre Anwendung identifiziert wird.
Der Logback-Appender und der java.util.logging
-Handler ermöglichen die automatische Erkennung des Ressourcentyps Ihrer App Engine-, Compute Engine- und Google Kubernetes Engine-Anwendungen.
In anderen Umgebungen wird standardmäßig die überwachte Ressource des Typs global
verwendet.
Sie können den Typ der überwachten Ressource in der Logback-Appender-Konfiguration oder in der Konfiguration des java.util.logging
-Handlers mit einem gültigen Typ überschreiben.
Zusätzliche Felder und Labels
Mit dem Logback-Appender und dem java.util.logging
-Handler können Sie Felder auf einem LogEntry-Objekt mithilfe einer Instanz von LoggingEnhancer hinzufügen oder aktualisieren.
Die Enhancer müssen wie in der Logback-Appender-Konfiguration oder der java.util.logging
-Handler-Konfiguration konfiguriert sein:
Die Verwendung benutzerdefinierter Labels wird für Ihre Konfiguration möglicherweise nicht unterstützt. Dataflow-Protokolle enthalten diese Labels beispielsweise nicht.
Weitere Informationen zur Installation finden Sie in der Dokumentation zur Cloud Logging-Bibliothek für Java. Probleme können Sie über die Problemverfolgung melden.
Protokolle mit der Cloud Logging-Clientbibliothek schreiben
Informationen zur direkten Verwendung der Cloud Logging-Clientbibliothek für Java finden Sie unter Cloud Logging-Clientbibliotheken.
In Google Cloud ausführen
Damit eine Anwendung Protokolle mit der Cloud Logging-Bibliothek für Java schreiben kann, muss das Dienstkonto für die zugrunde liegende Ressource die IAM Log-Autor (roles/logging.logWriter
) haben.
In den meisten Google Cloud-Umgebungen wird das Standarddienstkonto automatisch mit dieser Rolle konfiguriert.
App Engine
Cloud Logging ist für App Engine automatisch aktiviert und das Standarddienstkonto Ihrer Anwendung hat standardmäßig die IAM-Berechtigungen zum Schreiben von Logeinträgen.
In der App Engine-Standardumgebung wird standardmäßig die java.util.logging.Logger
API verwendet. Dadurch wird direkt in Cloud Logging geschrieben und die Konfiguration somit vereinfacht.
Weitere Informationen finden Sie in der App Engine-Dokumentation Anwendungslogs lesen und schreiben.
Flexible App Engine-Umgebung
In der flexiblen App Engine-Umgebung verwendet java.util.logging
standardmäßig ConsoleHandler
und sendet die Logs an stdout
und stderr
.
Die Jetty-Laufzeit wird zusammen mit der Cloud Logging-Bibliothek für Java bereitgestellt.
Mit dem java.util.logging
-Handler können Sie Logs direkt in Cloud Logging schreiben. Dazu müssen die logging.properties
, wie hier dargestellt, in der Datei app.yaml
angegeben werden:
env_variables:
JETTY_ARGS: -Djava.util.logging.config.file=WEB-INF/logging.properties
In Jetty-Laufzeiten ist das Logging von Trace-IDs möglich, wenn Sie den java.util.logging
-Handler oder den Logback-Appender verwenden.
Bei der Ausführung in der flexiblen App Engine-Umgebung versieht eine TraceLoggingEnhancer-Instanz jeden Logeintrag mithilfe des Labels trace_id
mit einer threadsicheren Trace-ID.
Google Kubernetes Engine (GKE)
GKE gewährt dem Standarddienstkonto automatisch die IAM-Rolle Logautor (roles/logging.logWriter
).
Wenn Sie Workload Identity Federation for GKE mit diesem Standarddienstkonto verwenden, um Arbeitslasten Zugriff auf bestimmte Google Cloud APIs zu gewähren, ist keine zusätzliche Konfiguration erforderlich.
Wenn Sie die Workload Identity-Föderation für GKE jedoch mit einem benutzerdefinierten IAM-Dienstkonto verwenden, muss das benutzerdefinierte Dienstkonto die Rolle „Logs Writer“ (roles/logging.logWriter
) haben.
Bei Bedarf können Sie auch den folgenden Befehl verwenden, um beim Erstellen des Clusters den Zugriffsbereich logging.write
hinzuzufügen:
gcloud container clusters create example-cluster-name \
--scopes https://www.googleapis.com/auth/logging.write
Compute Engine
Wenn Sie Compute Engine-VM-Instanzen verwenden, fügen Sie der jeweiligen Instanz den Zugriffsbereich für cloud-platform
hinzu. In der Google Cloud Console können Sie das beim Erstellen einer neuen Instanz im Bereich Instanz erstellen im Abschnitt Identität und API-Zugriff erledigen. Verwenden Sie das Compute Engine-Standarddienstkonto oder ein anderes Dienstkonto und wählen Sie im Abschnitt Identität und API-Zugriff die Option Uneingeschränkten Zugriff auf alle Cloud APIs zulassen aus. Achten Sie darauf, dass jedem ausgewählten Dienstkonto im Abschnitt IAM & Verwaltung der Google Cloud Console die Rolle „Log-Autor“ zugewiesen ist.
Lokal und extern ausführen
Wenn Sie die Cloud Logging-Bibliothek für Java außerhalb von Google Cloud verwenden möchten, z. B. auf Ihrer eigenen Workstation, auf den Computern Ihres Rechenzentrums oder auf den VM-Instanzen eines anderen Cloudanbieters, müssen Sie Ihre Google Cloud-Projekt-ID und die entsprechenden Anmeldedaten für das Dienstkonto direkt an die Cloud Logging-Bibliothek für Java übergeben.
So gehen Sie bei vorhandenen Dienstkonten vor:
Gewähren Sie dem Dienstkonto die IAM-Rolle Logautor (
roles/logging.logWriter
). Weitere Informationen zu IAM-Rollen finden Sie unter Zugriffssteuerung.
Wenn Sie kein Dienstkonto haben, erstellen Sie eins. Weitere Informationen finden Sie unter Dienstkonten erstellen.
Allgemeine Informationen zu den Authentifizierungsmethoden finden Sie unter Terminologie: Dienstkonten.
Logs ansehen
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.
Im Log-Explorer müssen Sie eine oder mehrere Ressourcen angeben. Die Auswahl der Ressourcen ist jedoch möglicherweise nicht offensichtlich. Hier sind ein paar Tipps für den Einstieg.
Wenn Sie Ihre Anwendung für App Engine bereitstellen oder die App Engine-spezifischen Bibliotheken verwenden, setzen Sie die Ressource auf GAE-Anwendung.
Wenn Sie Ihre Anwendung auf der Compute Engine bereitstellen, setzen Sie die Ressource auf GCE-VM-Instanz.
Wenn Sie Ihre Anwendung in Google Kubernetes Engine bereitstellen, wird der Ressourcentyp der Logeinträge von der Loggingkonfiguration des Clusters bestimmt. Weitere Informationen zu den Lösungen mit Legacy Google Cloud Observability und Google Cloud Observability Kubernetes Monitoring und den jeweiligen Auswirkungen auf den Ressourcentyp finden Sie unter Zu Google Cloud Observability Kubernetes Monitoring migrieren.
Wenn Ihre Anwendung die Cloud Logging API direkt nutzt, ist die Ressource von der API und Ihrer Konfiguration abhängig. Sie können in Ihrer Anwendung zum Beispiel eine Ressource angeben oder eine Standardressource verwenden.
Wenn im Log-Explorer keine Logs zu sehen sind, wechseln Sie zum erweiterten Abfragemodus und verwenden Sie eine leere Abfrage, um alle Logeinträge zu sehen.
- Klicken Sie oben im Log-Explorer auf das Dreipunkt-Menü (▾) und wählen Sie In erweiterten Filter umwandeln aus, um zum erweiterten Abfragemodus zu wechseln.
- Löschen Sie den Inhalt, der im Filterfeld angezeigt wird.
- Klicken Sie auf Filter senden.
Sie können die einzelnen Einträge prüfen, um Ihre Ressourcen zu identifizieren.
Weitere Informationen finden Sie unter Log-Explorer verwenden.