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 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
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 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
-
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 Antpath
en su archivo Ant. En el siguiente ejemplo, se muestra un elemento de ruta del archivo Ant para el ejemplo incluido con. Amazon S3
<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 comunicará 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, cuando se está cargando un archivo 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 Habilitar 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]