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

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-supportdiciembre de 2025. Le recomendamos que migre al para AWS SDK for Java 2.xseguir recibiendo nuevas funciones, mejoras de disponibilidad y actualizaciones de seguridad.

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 SDK de registro de la aplicación sin realizar ningún cambio 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 el Log4J JAR

Para usar Log4j con elSDK, debe descargar el Log4j del sitio web de ApacheJAR. El SDK no incluye el. JAR Copie el JAR archivo en una ubicación que se encuentre en su ruta de clases.

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 Log4j JAR y el archivo log4j.properties no tienen que 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

Tanto el archivo Log4j como el log4j.properties JAR deben estar ubicados en la ruta de clases. Si utiliza Apache Ant, establezca el classpath en el elemento path en su archivo Ant. El siguiente ejemplo muestra un elemento de ruta del archivo Ant para el ejemplo incluido con. Amazon S3 SDK

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

Si utilizas el EclipseIDE, puedes configurar la ruta de clases abriendo el menú y navegando hasta Project | Properties | Java Build Path.

Errores y advertencias específicos del servicio

Le recomendamos que deje siempre la jerarquía de registradores de «com.amazonaws» establecida en «» WARN para captar cualquier mensaje importante de las bibliotecas cliente. Por ejemplo, si el Amazon S3 cliente detecta que la aplicación no ha cerrado correctamente un archivo InputStream y que 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 el rootLogger valor enWARN, lo que hace que se incluyan los mensajes de advertencia y error de todos los registradores de la jerarquía «com.amazonaws». Como alternativa, puedes configurar el registrador com.amazonaws de forma explícita 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 gestiona Servicio de AWS una solicitud. AWS IDsSe puede acceder a las solicitudes mediante programación a través de los objetos Exception incluidos SDK en cualquier llamada de servicio fallida, y también se pueden registrar a través del nivel de DEBUG registro del 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. Al habilitar el DEBUG nivel en el org.apache.http.wire registrador, se pueden registrar todos los datos de solicitud y respuesta.

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. Configure el com.amazonaws.latency registrador para que se habilite este DEBUG registrador.

nota

Este registrador solo está disponible si las SDK métricas están habilitadas. Para obtener más información sobre el paquete de SDK métricas, consulte Habilitación de métricas para. 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]