AWS SDK for Java Registrazione delle chiamate - AWS SDK for Java 1. x

La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-supportdicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare AWS SDK for Java 2.xa 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à.

AWS SDK for Java Registrazione delle chiamate

AWS SDK for Java È dotato di strumentazione con Apache Commons Logging, che è un livello di astrazione che consente l'uso di uno qualsiasi dei numerosi 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. È possibile utilizzare la funzionalità SDK di registrazione 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 la registrazione delle chiamate a Log4j2 utilizzando l'interfaccia Apache Commons Logging. Per ulteriori informazioni, consulta Commons Logging Bridge nella documentazione di Log4j2.

Scarica il Log4J JAR

Per utilizzare Log4j conSDK, è necessario scaricare Log4j dal sito Web di JAR Apache. Non include il. SDK JAR Copia il JAR file in una posizione che si trova 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 sul tuo classpath. Non è necessario che il file Log4j JAR e il file log4j.properties si trovino nella stessa directory.

Il file di configurazione log4j.properties specifica proprietà come il livello di registrazione, dove viene inviato l'output di registrazione (ad esempio, a un file o alla console) e il formato dell'output. 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 for Java:

  • log4j.logger.com.amazonaws

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

Impostazione di classpath

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

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

Se utilizzi EclipseIDE, puoi impostare il classpath aprendo il menu e accedendo a Project | Properties | Java Build Path.

Errori e avvertenze specifici del servizio

Ti consigliamo di lasciare sempre la gerarchia dei logger «com.amazonaws» impostata su "" WARN per catturare eventuali messaggi importanti dalle librerie dei client. Ad esempio, se il Amazon S3 client rileva che l'applicazione non ha chiuso correttamente un'applicazione InputStream e che potrebbe esserci una perdita di risorse, il client S3 lo segnala tramite un messaggio di avviso ai 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 imposta il rootLogger toWARN, il che fa sì che vengano inclusi i 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

Registrazione del riepilogo di richieste/risposte

Ogni richiesta a un AWS servizio genera un ID di AWS richiesta univoco, utile in caso di problemi relativi alla gestione di una richiesta. AWS servizio AWS IDsle richieste sono accessibili a livello di codice tramite gli oggetti Exception in caso SDK di chiamata di servizio fallita e possono anche essere segnalate tramite il livello di DEBUG registro nel logger «com.amazonaws.request».

Il seguente file log4j.properties consente un riepilogo delle richieste e delle risposte, inclusa la richiesta. 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

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 for Java . Non è consigliabile abilitare questa registrazione nei sistemi di produzione perché la scrittura di richieste di grandi dimensioni (ad esempio, un file in fase di caricamento Amazon S3) o risposte può rallentare notevolmente un'applicazione. Se hai davvero bisogno di accedere a queste informazioni, puoi abilitarle temporaneamente tramite il logger Apache HttpClient 4. L'abilitazione del DEBUG livello sul org.apache.http.wire logger consente la registrazione di tutti i dati di richiesta e risposta.

Il seguente file log4j.properties attiva la registrazione cablata completa in Apache HttpClient 4 e deve 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 state cercando di risolvere i problemi e desiderate vedere parametri come il processo che richiede più tempo o se il lato server o client presenta la latenza maggiore, il registratore di latenza può essere utile. Imposta il com.amazonaws.latency logger per abilitare questo logger. DEBUG

Nota

Questo logger è disponibile solo se le SDK metriche sono abilitate. Per ulteriori informazioni sul pacchetto SDK metrics, consulta Enabling Metrics for the. 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

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]