View a markdown version of this page

Registrazione dei log AWS SDK per Java Chiamate - AWS SDK per Java 1.x

La versione AWS SDK per Java 1.x ha raggiunto la fine del supporto il 31 dicembre 2025. Ti consigliamo di eseguire la migrazione alla versione per continuare AWS SDK for Java 2.x a ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registrazione dei log AWS SDK per Java Chiamate

AWS SDK per Java È strumentato con Apache Commons Logging, che è un livello di astrazione che consente l'uso di uno qualsiasi dei diversi sistemi di registrazione in fase di esecuzione.

I sistemi di registrazione supportati includono, tra gli altri, Java Logging Framework e Apache Log4j. In questo argomento viene mostrato come utilizzare Log4j. Puoi utilizzare la funzionalità di registrazione dell'SDK senza apportare modifiche al codice dell'applicazione.

Per ulteriori informazioni su Log4j, visita il sito Web Apache.

Nota

Questo argomento si concentra su Log4j 1.x. Log4j2 non supporta direttamente Apache Commons Logging, ma fornisce un adattatore che indirizza automaticamente le chiamate di registrazione a Log4j2 utilizzando l'interfaccia di registrazione di Apache Commons. Per ulteriori informazioni, vedi Commons Logging Bridge nella documentazione di Log4j2.

Scarica il JAR di Log4J

Per utilizzare Log4j con l'SDK, è necessario scaricare il JAR Log4j dal sito Web di Apache. L'SDK non include il JAR. Copia il file JAR in una posizione presente nel tuo classpath.

Log4j utilizza un file di configurazione, log4j.properties. File di configurazione di esempio sono mostrati di seguito. Copia questo file di configurazione in una directory del tuo classpath. Il file JAR Log4j e il file log4j.properties non devono necessariamente trovarsi nella stessa directory.

Il file di configurazione log4j.properties specifica proprietà come il livello di registrazione, il luogo in cui viene inviato l'output della registrazione (ad esempio, a un file o alla console) e il formato dell'output. http://logging.apache.org/log4j/2.x/manual/layouts.html Il livello di registrazione è la granularità di output generata dal logger. Log4j supporta il concetto di gerarchie di registrazione multiple. Il livello di registrazione è impostato in modo indipendente per ogni gerarchia. Le due gerarchie di registrazione seguenti sono disponibili in AWS SDK per Java:

  • log4j.logger.com.amazonaws

  • log4j.logger.org.apache.http.wire

Impostazione di classpath

Sia il file JAR Log4j che il file log4j.properties devono trovarsi nel classpath. Se stai usando Apache Ant, imposta il classpath nell'elemento del tuo file Ant. path L'esempio seguente mostra un elemento di percorso dal file Ant per l' Amazon S3 esempio incluso nell'SDK.

<path id="aws.java.sdk.classpath"> <fileset dir="../../third-party" includes="**/*.jar"/> <fileset dir="../../lib" includes="**/*.jar"/> <pathelement location="."/> </path>

Se stai utilizzando l'IDE Eclipse, puoi impostare il classpath aprendo il menu e passando a Project (Progetto) | Properties (Proprietà) | Java Build Path (Percorso build Java).

Service-Specific Errori e avvertenze

Ti consigliamo di lasciare sempre la gerarchia dei logger «com.amazonaws» impostata su «WARN» per rilevare eventuali messaggi importanti dalle librerie client. Ad esempio, se il Amazon S3 client rileva che l'applicazione non è stata chiusa correttamente InputStream e potrebbe perdere risorse, il client S3 lo segnala tramite un messaggio di avviso nei log. Questo garantisce inoltre che i messaggi vengono registrati se il client presenta problemi di gestione delle richieste o delle risposte.

Il seguente file log4j.properties lo imposta su WARN, il che rootLogger causa l'inclusione dei messaggi di avviso e di errore provenienti da tutti i logger nella gerarchia «com.amazonaws». In alternativa, puoi impostare esplicitamente il logger com.amazonaws su 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

Request/Response Registrazione riassuntiva

Ogni richiesta a an Servizio AWS genera un ID di AWS richiesta univoco utile in caso di problemi con il modo in cui an Servizio AWS gestisce una richiesta. AWS Gli ID di richiesta sono accessibili a livello di codice tramite oggetti Exception nell'SDK per qualsiasi chiamata di servizio non riuscita e possono anche essere segnalati tramite il livello di log DEBUG nel logger «com.amazonaws.request».

Il seguente file log4j.properties consente un riepilogo delle richieste e delle risposte, inclusi gli ID delle richieste. AWS

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

Di seguito è riportato un esempio di output del log.

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

Registrazione in rete Verbose

In alcuni casi, può essere utile visualizzare le richieste e le risposte esatte inviate e ricevute AWS SDK per Java . Non dovresti abilitare questa registrazione nei sistemi di produzione perché la scrittura di richieste di grandi dimensioni (ad esempio, un file in cui viene caricato Amazon S3) o di risposte può rallentare notevolmente un'applicazione. Se hai davvero bisogno di accedere a queste informazioni, puoi abilitarle temporaneamente tramite il logger di Apache HttpClient 4. Abilitando il livello DEBUG sul logger org.apache.http.wire si abilita la registrazione di tutti i dati di richiesta e di risposta.

Il seguente file log4j.properties attiva la registrazione completa in Apache HttpClient 4 e dovrebbe essere attivato solo temporaneamente perché può avere un impatto significativo sulle prestazioni dell'applicazione.

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

Registrazione delle metriche di latenza

Se stai risolvendo problemi e desideri visualizzare metriche quali il processo richiede più tempo o se il lato server o client ha la latenza maggiore, il latency logger può essere utile. Imposta il com.amazonaws.latency logger su DEBUG per abilitare questo logger.

Nota

Questo logger è disponibile solo se le metriche SDK sono abilitate. Per saperne di più sul pacchetto di metriche SDK, vedi Abilitare le metriche per. AWS SDK per 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

Di seguito è riportato un esempio di output del log.

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]