Registro de llamadas AWS SDK for Java - AWS SDK for Java 1.x

Anunciamos la próxima versión end-of-support para AWS SDK for Java (v1). Se recomienda que migre a AWS SDK for Java versión 2. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

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, que es una capa de abstracción que permite el uso de cualquiera de los varios sistemas de registro en tiempo de ejecución.

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, consulte el sitio web de Apache.

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 en la documentación de Log4j2.

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, dónde se envía la salida del registro (por ejemplo, a un archivo o a la consola) y el formato de la salida. El nivel de registro es el detalle de la salida que genera el registrador. Log4j admite el concepto de varias jerarquías de registro. El nivel de registro se define de forma independiente para cada jerarquía. Las siguientes dos jerarquías de registro están disponibles en AWS SDK for Java:

  • 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 Ant, establezca el classpath en el elemento path en su archivo Ant. El ejemplo siguiente muestra un elemento de la ruta del archivo Ant para el ejemplo de Amazon S3 incluido en el SDK.

<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 Se puede acceder a los ID de solicitud 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, incluidos los ID de las solicitudes. 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

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ía y recibe. 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]