La AWS SDK for Java versión 1.x entró en modo de mantenimiento el 31 de julio de 2024 y estará disponible el 31 de end-of-support
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Registro de llamadas AWS SDK for Java
AWS SDK for Java Está equipado con Apache Commons Logging
Los sistemas de registro admitidos incluyen Java Logging Framework y Apache Log4j, entre otros. En este tema se muestra cómo utilizar Log4j. Puede utilizar la funcionalidad de registro del SDK sin necesidad de realizar cambios en el código de la aplicación.
Para obtener más información sobre Log4j
nota
Este tema se centra en Log4j 1.x. Log4j2 no admite directamente Apache Commons Logging, pero ofrece un adaptador que dirige automáticamente las llamadas de registro a Log4j2 utilizando la interfaz de Apache Commons Logging. Para obtener más información, consulte Commons Logging Bridge
Descarga del archivo JAR de Log4J
Para utilizar Log4j con el SDK, debe descargar el archivo JAR de Log4j JAR del sitio web de Apache. El SDK no incluye el archivo JAR. Copie el archivo JAR en una ubicación que esté en el classpath.
Log4j usa un archivo de configuración, log4j.properties. A continuación, se muestran ejemplos de archivos de configuración. Copie este archivo de configuración en un directorio del classpath. El archivo JAR de Log4j y el archivo log4j.properties no necesitan estar en el mismo directorio.
El archivo de configuración log4j.properties especifica propiedades, como el nivel de registro
-
log4j.logger.com.amazonaws
-
log4j.logger.org.apache.http.wire
Definición del classpath
El archivo JAR de Log4j y el archivo log4j.properties deben estar en el classpath. Si utiliza Apache Antpath
en su archivo Ant. El ejemplo siguiente muestra un elemento de la ruta del archivo Ant para el ejemplo
<path id="aws.java.sdk.classpath"> <fileset dir="../../third-party" includes="**/*.jar"/> <fileset dir="../../lib" includes="**/*.jar"/> <pathelement location="."/> </path>
Si utiliza el IDE de Eclipse, puede establecer el classpath abriendo el menú y yendo a Project (Proyecto) | Properties (Propiedades) | Java Build Path (Ruta de compilación de Java).
Errores y advertencias específicos del servicio
Le recomendamos que siempre deje la jerarquía del registrador "com.amazonaws" establecida en "WARN" para identificar los mensajes importantes de las bibliotecas cliente. Por ejemplo, si el Amazon S3 cliente detecta que su aplicación no ha cerrado correctamente InputStream
y podría estar filtrando recursos, el cliente S3 lo notificará mediante un mensaje de advertencia en los registros. Esto también garantiza que se registren los mensajes si el cliente tiene algún problema con el tratamiento de las solicitudes o respuestas.
El siguiente archivo log4j.properties establece rootLogger
en WARN, lo que hace que se incluyan los mensajes de advertencia y de error de todos los registradores de la jerarquía "com.amazonaws". Otra opción consiste en establecer de forma explícita el registrador com.amazonaws en 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
Registro de resumen de solicitudes y respuestas
Cada solicitud a an Servicio de AWS genera un identificador de AWS solicitud único que resulta útil si tienes algún problema con la forma en que an Servicio de AWS gestiona una solicitud. AWS IDs Se puede acceder a las solicitudes mediante programación a través de los objetos Exception del SDK para cualquier llamada de servicio fallida, y también se pueden informar a través del nivel de registro DEBUG, en el registrador «com.amazonaws.request».
El siguiente archivo log4j.properties permite obtener un resumen de las solicitudes y respuestas, incluida la solicitud. 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
Este es un ejemplo del resultado del registro.
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
Registro detallado en red
En algunos casos, puede resultar útil ver las solicitudes y respuestas exactas que AWS SDK for Java envían y reciben. No deberías habilitar este registro en los sistemas de producción, ya que escribir solicitudes o respuestas de gran tamaño (por ejemplo, un archivo en el que se está cargando Amazon S3) o respuestas puede ralentizar considerablemente la aplicación. Si realmente necesita acceder a esta información, puede habilitarla temporalmente a través del registrador Apache HttpClient 4. La activación del nivel DEBUG en el registrador org.apache.http.wire
permite registrar todos los datos de las solicitudes y respuestas.
El siguiente archivo log4j.properties activa el registro completo en Apache HttpClient 4 y solo debe activarse temporalmente, ya que puede tener un impacto significativo en el rendimiento de la aplicación.
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
Registro de métricas de latencia
Si está solucionando problemas y desea ver métricas; por ejemplo, qué proceso está tardando más o si es mayor la latencia del cliente o del servidor, el registrador de latencia puede resultarle muy útil. Para habilitar este registrador, configure el registrador com.amazonaws.latency
en DEBUG.
nota
Este registrador solo está disponible si se habilitan las métricas de SDK. Para obtener más información sobre el paquete de métricas de SDK, consulte Habilitación de métricas para el 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
Este es un ejemplo del resultado del registro.
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]