Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Journalisation avec le SDK pour Java 2.x
Il AWS SDK for Java 2.x utilise SLF4J
Les systèmes de journalisation pris en charge incluent le Java Logging Framework et Apache Log4j 2
Fichier de configuration Log4j 2
Vous utilisez généralement un fichier de configuration nommé log4j2.xml Log4j 2. Vous trouverez ci-dessous des exemples de fichiers de configuration. Pour en savoir plus sur les valeurs utilisées dans le fichier de configuration, consultez le manuel pour la configuration de Log4j
Le log4j2.xml fichier doit se trouver dans le chemin de classe au démarrage de votre application. Pour un projet Maven, placez le fichier dans le <project-dir>/src/main/resources répertoire.
Le fichier log4j2.xml de configuration spécifie des propriétés telles que le niveau de journalisationsoftware.amazon.awssdk.
Ajouter une dépendance de journalisation
Pour configurer la liaison Log4j 2 pour SLF4J dans votre fichier de compilation, utilisez ce qui suit.
À utiliser 2.20.0 pour la version minimale de l'log4j-slf4j2-implartefact. Pour la dernière version, utilisez la version publiée sur Maven CentralVERSIONRemplacez-la par la version que vous allez utiliser.
SDK-specific erreurs et avertissements
Nous vous recommandons de toujours laisser la hiérarchie des enregistreurs « software.amazon.awssdk » réglée sur « WARN » pour détecter tout message important provenant des bibliothèques clientes du SDK. Par exemple, si le client Amazon S3 détecte que votre application n'a pas été correctement fermée InputStream et qu'il est possible qu'il y ait une fuite de ressources, il le signale par un message d'avertissement dans les journaux. Il est ainsi possible de s'assurer que les messages sont enregistrés au cas où le client rencontrerait des problèmes de gestion des demandes ou des réponses.
Le log4j2.xml fichier suivant définit le paramètre sur rootLogger « WARN », ce qui entraîne l'affichage de messages d'avertissement et d'erreur provenant de tous les enregistreurs de l'application, y compris ceux de la hiérarchie « software.amazon.awssdk ». Vous pouvez également définir explicitement la hiérarchie des enregistreurs « software.amazon.awssdk » sur « WARN » si elle est utilisée. <Root level="ERROR">
Exemple Log4j2.xml de fichier de configuration
Cette configuration enregistre les messages aux niveaux « ERROR » et « WARN » sur la console pour toutes les hiérarchies d'enregistreurs.
<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 journalisation récapitulative
Chaque demande adressée à an Service AWS génère un identifiant de AWS demande unique qui est utile si vous rencontrez un problème avec la façon dont an Service AWS traite une demande. AWS
Les ID de demande sont accessibles par programmation via SdkServiceException
Le log4j2.xml fichier suivant permet de récapituler les demandes et les réponses.
<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>
Voici un exemple de la sortie du journal:
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
Si vous êtes intéressé uniquement par l'ID de demande, utilisez<Logger
name="software.amazon.awssdk.requestId" level="DEBUG" />.
Debug-level Journalisation du SDK
Si vous avez besoin de plus de détails sur le fonctionnement du SDK, vous pouvez définir le niveau de journalisation de l'software.amazon.awssdkenregistreur sur. DEBUG À ce niveau, le SDK génère une grande quantité de détails. Nous vous recommandons donc de définir ce niveau pour résoudre les erreurs à l'aide de tests d'intégration.
À ce niveau de journalisation, le SDK enregistre des informations sur la configuration, la résolution des informations d'identification, les intercepteurs d'exécution, l'activité TLS de haut niveau, la signature des demandes, etc.
Voici un exemple d'instructions sorties par le SDK au DEBUG niveau d'un S3Client#listBuckets() appel.
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 ...
Le log4j2.xml fichier suivant configure la sortie précédente.
<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>
Activer l'enregistrement des câbles
Il peut être utile de voir les demandes et les réponses exactes que le SDK pour Java 2.x envoie et reçoit. Si vous avez besoin d'accéder à ces informations, vous pouvez les activer temporairement en ajoutant la configuration nécessaire en fonction du client HTTP utilisé par le client de service.
Par défaut, les clients de service synchrones, tels que le S3Client
Voici une liste des clients HTTP que vous pouvez utiliser pour les deux catégories de clients de service :
| Clients HTTP synchrones | Clients HTTP asynchrones |
|---|---|
| Apache5HttpClient |
NettyNioAsyncHttpClient |
| UrlConnectionHttpClient |
AwsCrtAsyncHttpClient |
| AwsCrtHttpClient |
|
| ApacheHttpClient |
Consultez l'onglet approprié ci-dessous pour connaître les paramètres de configuration à ajouter en fonction du client HTTP sous-jacent.
Avertissement
Nous vous recommandons d'utiliser uniquement la journalisation du réseau filaire à des fins de débogage. Désactivez-la dans vos environnements de production, car elle peut consigner des données sensibles. Elle enregistre l'intégralité de la demande ou de la réponse sans chiffrement, même pour un appel HTTPS. Pour les demandes volumineuses (par exemple, pour télécharger un fichier Amazon S3) ou les réponses, la journalisation détaillée des fils peut également avoir un impact significatif sur les performances de votre application.