Enregistrement AWS SDK for Java des appels - AWS SDK for Java 1. x

La AWS SDK for Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-supportle 31 décembre 2025. Nous vous recommandons de migrer vers le pour continuer AWS SDK for Java 2.xà bénéficier des nouvelles fonctionnalités, des améliorations de disponibilité et des mises à jour de sécurité.

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, une couche d'abstraction qui permet d'utiliser l'un des nombreux systèmes de journalisation au moment de l'exécution.

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, consultez le site web Apache.

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 dans la documentation Log4j2.

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, l'emplacement vers lequel la sortie de la journalisation est envoyée (par exemple, vers un fichier ou vers la console) et le format de la sortie. Le niveau de journalisation correspond à la granularité de la sortie que l'enregistreur d'événements génère. Log4j prend en charge le concept de hiérarchies de journalisation multiples. Le niveau de journalisation est défini de manière indépendante pour chaque hiérarchie. Les deux hiérarchies de journalisation suivantes sont disponibles dans le kit AWS SDK for Java :

  • 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 Ant, définissez le chemin de classe dans l'élément path de votre fichier Ant. L'exemple suivant montre un élément de chemin du fichier Ant pour l' Amazon S3 exemple inclus dans leSDK.

<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.wireenregistreur 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.latencyenregistreur 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]