Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Loggen mit dem SDK für Java 2.x
Der AWS SDK for Java 2.x verwendet SLF4J
Zu den unterstützten Protokollierungssystemen gehören unter anderem das Java Logging Framework und Apache Log4j 2.
Log4j 2-Konfigurationsdatei
Normalerweise verwenden Sie eine Konfigurationsdatei, die log4j2.xml mit Log4j 2 benannt ist. Beispiel-Konfigurationsdateien werden nachfolgend angezeigt. Weitere Informationen über die Werte in der Konfigurationsdatei finden Sie im Handbuch für die Log4j-Konfiguration
Die log4j2.xml Datei muss sich im Klassenpfad befinden, wenn Ihre Anwendung gestartet wird. Für ein Maven-Projekt legen Sie die Datei in das Verzeichnis. <project-dir>/src/main/resources
Die log4j2.xml Konfigurationsdatei spezifiziert Eigenschaften wie die Protokollierungsstufesoftware.amazon.awssdk
Protokollierungsabhängigkeit hinzufügen
Verwenden Sie Folgendes, um die Log4J 2-Bindung für SLF4J in Ihrer Build-Datei zu konfigurieren.
Verwenden Sie es 2.20.0 für die Mindestversion des log4j-slf4j2-impl Artefakts. Verwenden Sie für die neueste Version die Version, die in Maven Central veröffentlicht wurde. VERSION durch die Version, die Sie verwenden werden.
SDK-specific Fehler und Warnungen
Wir empfehlen, dass Sie die Logger-Hierarchie „software.amazon.awssdk“ immer auf „WARN“ gesetzt lassen, um wichtige Meldungen aus den Client-Bibliotheken des SDK abzufangen. Wenn der Amazon S3-Client beispielsweise feststellt, dass Ihre Anwendung nicht ordnungsgemäß geschlossen wurde InputStream und möglicherweise Ressourcen verloren gehen, meldet der S3-Client dies in Form einer Warnmeldung in den Protokollen. Dadurch wird auch sichergestellt, dass Nachrichten protokolliert werden, wenn der Client Schwierigkeiten bei der Verarbeitung von Anforderungen oder Antworten hat.
Die folgende log4j2.xml Datei setzt den Wert rootLogger auf „WARN“, wodurch Warn- und Fehlermeldungen von allen Loggern in der Anwendung ausgegeben werden, einschließlich derer in der Hierarchie „software.amazon.awssdk“. Alternativ können Sie die Logger-Hierarchie „software.amazon.awssdk“ explizit auf „WARN“ setzen, falls sie verwendet wird. <Root level="ERROR">
Beispiel für eine Konfigurationsdatei Log4j2.xml
Diese Konfiguration protokolliert Meldungen auf den Ebenen „ERROR“ und „WARN“ für alle Logger-Hierarchien in der Konsole.
<Configuration status="WARN"> <Appenders> <Console name="ConsoleAppender" target="SYSTEM_OUT"> <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" /> </Console> </Appenders> <Loggers> <Root level="WARN"> <AppenderRef ref="ConsoleAppender"/> </Root> </Loggers> </Configuration>
Request/response zusammenfassende Protokollierung
Jede Anfrage an eine AWS-Service generiert eine eindeutige AWS Anforderungs-ID, die nützlich ist, wenn Sie auf ein Problem mit der Bearbeitung einer Anfrage stoßen. AWS-Service AWS
Auf Anforderungs-IDs kann programmgesteuert über SdkServiceException
Die folgende Datei ermöglicht eine Zusammenfassung der Anfragen und Antworten. log4j2.xml
<Configuration status="WARN"> <Appenders> <Console name="ConsoleAppender" target="SYSTEM_OUT"> <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" /> </Console> </Appenders> <Loggers> <Root level="ERROR"> <AppenderRef ref="ConsoleAppender"/> </Root> <Logger name="software.amazon.awssdk" level="WARN" /> <Logger name="software.amazon.awssdk.request" level="DEBUG" /> </Loggers> </Configuration>
Hier finden Sie ein Beispiel für die Protokollausgabe:
2022-09-23 16:02:08 [main] DEBUG software.amazon.awssdk.request:85 - Sending Request: DefaultSdkHttpFullRequest(httpMethod=POST, protocol=https, host=dynamodb.us-east-1.amazonaws.com, encodedPath=/, headers=[amz-sdk-invocation-id, Content-Length, Content-Type, User-Agent, X-Amz-Target], queryParameters=[]) 2022-09-23 16:02:08 [main] DEBUG software.amazon.awssdk.request:85 - Received successful response: 200, Request ID: QS9DUMME2NHEDH8TGT9N5V53OJVV4KQNSO5AEMVJF66Q9ASUAAJG, Extended Request ID: not available
Wenn Sie nur an der Anforderungs-ID interessiert sind, verwenden Sie<Logger
name="software.amazon.awssdk.requestId" level="DEBUG" />.
Debug-level SDK-Protokollierung
Wenn Sie weitere Informationen darüber benötigen, was das SDK tut, können Sie die Protokollierungsstufe des software.amazon.awssdk Loggers auf festlegenDEBUG. Auf dieser Ebene gibt das SDK eine große Menge an Details aus. Wir empfehlen daher, diese Stufe festzulegen, um Fehler mithilfe von Integrationstests zu beheben.
Auf dieser Protokollierungsebene protokolliert das SDK Informationen zur Konfiguration, zur Auflösung von Anmeldeinformationen, zum Abfangen der Ausführung, zu TLS-Aktivitäten auf hoher Ebene, zur Signierung von Anfragen und vielem mehr.
Im Folgenden finden Sie eine Auswahl von Anweisungen, die vom SDK auf DEBUG Ebene für einen S3Client#listBuckets() Aufruf ausgegeben werden.
DEBUG s.a.a.r.p.AwsRegionProviderChain:57 - Unable to load region from software.amazon.awssdk.regions.providers.SystemSettingsRegionProvider@324dcd31:Unable to load region from system settings. Region must be specified either via environment variable (AWS_REGION) or system property (aws.region). DEBUG s.a.a.c.i.h.l.ClasspathSdkHttpServiceProvider:85 - The HTTP implementation loaded is software.amazon.awssdk.http.apache.ApacheSdkHttpService@a23a01d DEBUG s.a.a.c.i.ExecutionInterceptorChain:85 - Creating an interceptor chain that will apply interceptors in the following order: [software.amazon.awssdk.core.internal.interceptor.HttpChecksumValidationInterceptor@69b2f8e5, software.amazon.awssdk.awscore.interceptor.HelpfulUnknownHostExceptionInterceptor@6331250e, software.amazon.awssdk.awscore.eventstream.EventStreamInitialRequestInterceptor@a10c1b5, software.amazon.awssdk.awscore.interceptor.TraceIdExecutionInterceptor@644abb8f, software.amazon.awssdk.services.s3.auth.scheme.internal.S3AuthSchemeInterceptor@1a411233, software.amazon.awssdk.services.s3.endpoints.internal.S3ResolveEndpointInterceptor@70325d20, software.amazon.awssdk.services.s3.endpoints.internal.S3RequestSetEndpointInterceptor@7c2327fa, software.amazon.awssdk.services.s3.internal.handlers.StreamingRequestInterceptor@4d847d32, software.amazon.awssdk.services.s3.internal.handlers.CreateBucketInterceptor@5f462e3b, software.amazon.awssdk.services.s3.internal.handlers.CreateMultipartUploadRequestInterceptor@3d7fa3ae, software.amazon.awssdk.services.s3.internal.handlers.DecodeUrlEncodedResponseInterceptor@58065f0c, software.amazon.awssdk.services.s3.internal.handlers.GetBucketPolicyInterceptor@3605c4d3, software.amazon.awssdk.services.s3.internal.handlers.S3ExpressChecksumInterceptor@585c13de, software.amazon.awssdk.services.s3.internal.handlers.AsyncChecksumValidationInterceptor@187eb9a8, software.amazon.awssdk.services.s3.internal.handlers.SyncChecksumValidationInterceptor@726a6b94, software.amazon.awssdk.services.s3.internal.handlers.EnableTrailingChecksumInterceptor@6ad11a56, software.amazon.awssdk.services.s3.internal.handlers.ExceptionTranslationInterceptor@522b2631, software.amazon.awssdk.services.s3.internal.handlers.GetObjectInterceptor@3ff57625, software.amazon.awssdk.services.s3.internal.handlers.CopySourceInterceptor@1ee29c84, software.amazon.awssdk.services.s3.internal.handlers.ObjectMetadataInterceptor@7c8326a4] DEBUG s.a.a.u.c.CachedSupplier:85 - (SsoOidcTokenProvider()) Cached value is stale and will be refreshed. ... DEBUG s.a.a.c.i.ExecutionInterceptorChain:85 - Creating an interceptor chain that will apply interceptors in the following order: [software.amazon.awssdk.core.internal.interceptor.HttpChecksumValidationInterceptor@51351f28, software.amazon.awssdk.awscore.interceptor.HelpfulUnknownHostExceptionInterceptor@21618fa7, software.amazon.awssdk.awscore.eventstream.EventStreamInitialRequestInterceptor@15f2eda3, software.amazon.awssdk.awscore.interceptor.TraceIdExecutionInterceptor@34cf294c, software.amazon.awssdk.services.sso.auth.scheme.internal.SsoAuthSchemeInterceptor@4d7aaca2, software.amazon.awssdk.services.sso.endpoints.internal.SsoResolveEndpointInterceptor@604b1e1d, software.amazon.awssdk.services.sso.endpoints.internal.SsoRequestSetEndpointInterceptor@62566842] ... DEBUG s.a.a.request:85 - Sending Request: DefaultSdkHttpFullRequest(httpMethod=GET, protocol=https, host=portal.sso.us-east-1.amazonaws.com, encodedPath=/federation/credentials, headers=[amz-sdk-invocation-id, User-Agent, x-amz-sso_bearer_token], queryParameters=[role_name, account_id]) DEBUG s.a.a.c.i.h.p.s.SigningStage:85 - Using SelectedAuthScheme: smithy.api#noAuth DEBUG s.a.a.h.a.i.c.SdkTlsSocketFactory:366 - Connecting socket to portal.sso.us-east-1.amazonaws.com/18.235.195.183:443 with timeout 2000 ... DEBUG s.a.a.requestId:85 - Received successful response: 200, Request ID: bb4f40f4-e920-4b5c-8648-58f26e7e08cd, Extended Request ID: not available DEBUG s.a.a.request:85 - Received successful response: 200, Request ID: bb4f40f4-e920-4b5c-8648-58f26e7e08cd, Extended Request ID: not available DEBUG s.a.a.u.c.CachedSupplier:85 - (software.amazon.awssdk.services.sso.auth.SsoCredentialsProvider@b965857) Successfully refreshed cached value. Next Prefetch Time: 2024-04-25T22:03:10.097Z. Next Stale Time: 2024-04-25T22:05:30Z DEBUG s.a.a.c.i.ExecutionInterceptorChain:85 - Interceptor 'software.amazon.awssdk.services.s3.endpoints.internal.S3RequestSetEndpointInterceptor@7c2327fa' modified the message with its modifyHttpRequest method. ... DEBUG s.a.a.c.i.h.p.s.SigningStage:85 - Using SelectedAuthScheme: aws.auth#sigv4 ... DEBUG s.a.a.a.s.Aws4Signer:85 - AWS4 Canonical Request: GET ... DEBUG s.a.a.h.a.a.i.s.DefaultV4RequestSigner:85 - AWS4 String to sign: AWS4-HMAC-SHA256 20240425T210631Z 20240425/us-east-1/s3/aws4_request aafb7784627fa7a49584256cb746279751c48c2076f813259ef767ecce304d64 DEBUG s.a.a.h.a.i.c.SdkTlsSocketFactory:366 - Connecting socket to s3.us-east-1.amazonaws.com/52.217.41.86:443 with timeout 2000 ...
Die folgende log4j2.xml Datei konfiguriert die vorherige Ausgabe.
<Configuration status="WARN"> <Appenders> <Console name="ConsoleAppender" target="SYSTEM_OUT"> <PatternLayout pattern="%-5p %c{1.}:%L - %m%n" /> </Console> </Appenders> <Loggers> <Root level="WARN"> <AppenderRef ref="ConsoleAppender"/> </Root> <Logger name="software.amazon.awssdk" level="DEBUG" /> </Loggers> </Configuration>
Aktivieren Sie die Drahtprotokollierung
Es kann nützlich sein, die genauen Anfragen und Antworten zu sehen, die das SDK für Java 2.x sendet und empfängt. Wenn Sie Zugriff auf diese Informationen benötigen, können Sie sie vorübergehend aktivieren, indem Sie die erforderliche Konfiguration hinzufügen, je nachdem, welchen HTTP-Client der Service-Client verwendet.
Standardmäßig verwenden synchrone Service-Clients, wie der S3Client, einen zugrunde liegenden Apache
Hier ist eine Aufschlüsselung der HTTP-Clients, die Sie für die beiden Kategorien von Service-Clients verwenden können:
| Synchrone HTTP-Clients | Asynchrone HTTP-Clients |
|---|---|
| Apache5HttpClient |
NettyNioAsyncHttpClient |
| UrlConnectionHttpClient |
AwsCrtAsyncHttpClient |
| AwsCrtHttpClient |
|
| ApacheHttpClient |
Auf der entsprechenden Registerkarte unten finden Sie die Konfigurationseinstellungen, die Sie je nach dem zugrunde liegenden HTTP-Client hinzufügen müssen.
Warnung
Wir empfehlen Ihnen, die Übertragungsprotokollierung ausschließlich für Debugging-Zwecke zu verwenden. Deaktivieren Sie sie in Produktionsumgebungen, da sie sensible Daten aufzeichnen kann. Sie protokolliert die gesamte Anfrage oder Antwort ohne Verschlüsselung, auch bei einem HTTPS-Aufruf. Bei großen Anfragen (z. B. um eine Datei hochzuladen Amazon S3) oder Antworten kann das ausführliche Wirelogging auch die Leistung Ihrer Anwendung erheblich beeinträchtigen.