La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-support
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
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
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
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'
-
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 Antpath
L'esempio seguente mostra un elemento del percorso del file Ant per l' Amazon S3
esempio
<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]