La AWS SDK for Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-support
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.
Enregistrement AWS SDK for Java des appels
AWS SDK for Java Il est instrumenté avec Apache Commons Logging
Les systèmes de journalisation pris en charge incluent Java Logging Framework et Apache Log4j, entre autres. Cette section vous explique comment utiliser Log4j. Vous pouvez utiliser la fonctionnalité SDK de journalisation sans apporter de modifications au code de votre application.
Pour en savoir plus sur Log4j
Note
Cette rubrique se concentre sur Log4j 1.x. Log4j2 ne prend pas directement en charge Apache Commons Logging, mais fournit un adaptateur qui dirige automatiquement la journalisation des appels vers Log4j2 à l'aide de l'interface Apache Commons Logging. Pour plus d'informations, consultez Commons Logging Bridge
Téléchargez le Log4J JAR
Pour utiliser Log4j avec leSDK, vous devez télécharger Log4j JAR depuis le site Web d'Apache. Le SDK n'inclut pas leJAR. Copiez le JAR fichier dans un emplacement qui se trouve sur votre chemin de classe.
Log4j utilise un fichier de configuration, log4j.properties. Vous trouverez ci-dessous des exemples de fichiers de configuration. Copiez ce fichier de configuration dans un répertoire de votre chemin de classe. Le fichier Log4j JAR et le fichier log4j.properties ne doivent pas nécessairement se trouver dans le même répertoire.
Le fichier de configuration log4j.properties spécifie les propriétés telles que le niveau de journalisation
-
log4j.logger.com.amazonaws
-
log4j.logger.org.apache.http.wire
Définition du chemin de classe
Le fichier Log4j JAR et le fichier log4j.properties doivent tous deux se trouver sur votre chemin de classe. Si vous utilisez Apache Antpath
de votre fichier Ant. L'exemple suivant montre un élément de chemin du fichier Ant pour l' Amazon S3
exemple
<path id="aws.java.sdk.classpath"> <fileset dir="../../third-party" includes="**/*.jar"/> <fileset dir="../../lib" includes="**/*.jar"/> <pathelement location="."/> </path>
Si vous utilisez EclipseIDE, vous pouvez définir le chemin de classe en ouvrant le menu et en accédant à Project | Properties | Java Build Path.
Erreurs et avertissements propres au service
Nous vous recommandons de toujours laisser la hiérarchie des enregistreurs « com.amazonaws » définie sur « » WARN pour récupérer les messages importants provenant des bibliothèques clientes. Par exemple, si le Amazon S3 client détecte que votre application n'a pas correctement fermé une application InputStream
et qu'elle est susceptible de provoquer une fuite de ressources, le client S3 le signale par le biais d'un message d'avertissement envoyé aux 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 fichier log4j.properties suivant définit la valeur surWARN, ce qui rootLogger
entraîne l'inclusion des messages d'avertissement et d'erreur de tous les enregistreurs de la hiérarchie « com.amazonaws ». Vous pouvez également définir explicitement le logger com.amazonaws sur. WARN
log4j.rootLogger=WARN, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # Or you can explicitly enable WARN and ERROR messages for the {AWS} Java clients log4j.logger.com.amazonaws=WARN
Journalisation récapitulative des demandes et des réponses
Chaque demande envoyée à un AWS service génère un identifiant de AWS demande unique qui est utile si vous rencontrez un problème avec le traitement d'une demande par an AWS service . AWS IDsles demandes sont accessibles par programmation via des objets Exception dans le cas SDK d'un appel de service échoué, et peuvent également être signalées via le niveau de DEBUG journalisation dans l'enregistreur « com.amazonaws.request ».
Le fichier log4j.properties suivant permet de résumer les demandes et les réponses, y compris les demandes. AWS IDs
log4j.rootLogger=WARN, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # Turn on DEBUG logging in com.amazonaws.request to log # a summary of requests/responses with {AWS} request IDs log4j.logger.com.amazonaws.request=DEBUG
Voici un exemple de la sortie du journal.
2009-12-17 09:53:04,269 [main] DEBUG com.amazonaws.request - Sending Request: POST https://rds.amazonaws.com / Parameters: (MaxRecords: 20, Action: DescribeEngineDefaultParameters, SignatureMethod: HmacSHA256, AWSAccessKeyId: ACCESSKEYID, Version: 2009-10-16, SignatureVersion: 2, Engine: mysql5.1, Timestamp: 2009-12-17T17:53:04.267Z, Signature: q963XH63Lcovl5Rr71APlzlye99rmWwT9DfuQaNznkD, ) 2009-12-17 09:53:04,464 [main] DEBUG com.amazonaws.request - Received successful response: 200, {AWS} Request ID: 694d1242-cee0-c85e-f31f-5dab1ea18bc6 2009-12-17 09:53:04,469 [main] DEBUG com.amazonaws.request - Sending Request: POST https://rds.amazonaws.com / Parameters: (ResetAllParameters: true, Action: ResetDBParameterGroup, SignatureMethod: HmacSHA256, DBParameterGroupName: java-integ-test-param-group-0000000000000, AWSAccessKeyId: ACCESSKEYID, Version: 2009-10-16, SignatureVersion: 2, Timestamp: 2009-12-17T17:53:04.467Z, Signature: 9WcgfPwTobvLVcpyhbrdN7P7l3uH0oviYQ4yZ+TQjsQ=, ) 2009-12-17 09:53:04,646 [main] DEBUG com.amazonaws.request - Received successful response: 200, {AWS} Request ID: 694d1242-cee0-c85e-f31f-5dab1ea18bc6
Journalisation du réseau filaire détaillée
Dans certains cas, il peut être utile de voir les demandes et réponses exactes qu'ils AWS SDK for Java envoient et reçoivent. Vous ne devez pas activer cette journalisation dans les systèmes de production, car l'écriture de demandes volumineuses (par exemple, le téléchargement d'un fichier Amazon S3) ou de réponses peut ralentir considérablement une application. Si vous avez vraiment besoin d'accéder à ces informations, vous pouvez les activer temporairement via l'enregistreur Apache HttpClient 4. L'activation du DEBUG niveau sur l'org.apache.http.wire
enregistreur permet de consigner toutes les données de demande et de réponse.
Le fichier log4j.properties suivant active la journalisation complète dans Apache HttpClient 4 et ne doit être activé que temporairement car cela peut avoir un impact significatif sur les performances de votre application.
log4j.rootLogger=WARN, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # Log all HTTP content (headers, parameters, content, etc) for # all requests and responses. Use caution with this since it can # be very expensive to log such verbose data! log4j.logger.org.apache.http.wire=DEBUG
Journalisation des métriques de latence
L'enregistreur d'événements de latence peut s'avérer utile si vous voulez résoudre des problèmes et que vous souhaitez voir des métriques permettant entre autres de déterminer quel processus prend le plus de temps, ou si le côté serveur ou client a la plus grande latence. Réglez l'com.amazonaws.latency
enregistreur sur pour DEBUG activer cet enregistreur.
Note
Cet enregistreur n'est disponible que si SDK les métriques sont activées. Pour en savoir plus sur le package de SDK métriques, voir Activer les métriques pour le AWS SDK for Java.
log4j.rootLogger=WARN, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n log4j.logger.com.amazonaws.latency=DEBUG
Voici un exemple de la sortie du journal.
com.amazonaws.latency - ServiceName=[{S3}], StatusCode=[200], ServiceEndpoint=[https://list-objects-integ-test-test.s3.amazonaws.com], RequestType=[ListObjectsV2Request], AWSRequestID=[REQUESTID], HttpClientPoolPendingCount=0, RetryCapacityConsumed=0, HttpClientPoolAvailableCount=0, RequestCount=1, HttpClientPoolLeasedCount=0, ResponseProcessingTime=[52.154], ClientExecuteTime=[487.041], HttpClientSendRequestTime=[192.931], HttpRequestTime=[431.652], RequestSigningTime=[0.357], CredentialsRequestTime=[0.011, 0.001], HttpClientReceiveResponseTime=[146.272]