O AWS SDK for Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e chegará end-of-support
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Registrando AWS SDK for Java chamadas
O AWS SDK for Java é instrumentado com o Apache Commons Logging
Entre os sistemas de registro em log compatíveis estão o Java Logging Framework e o Apache Log4j, entre outros. Este tópico mostra como usar o Log4j. Você pode usar a funcionalidade SDK de registro do sem fazer nenhuma alteração no código do aplicativo.
Para saber mais sobre o Log4j
nota
Este tópico se concentra no Log4j 1.x. O Log4j2 não oferece suporte diretamente ao Apache Commons Logging, mas fornece um adaptador que direciona automaticamente chamadas de registro em log para o Log4j2 usando a interface do Apache Commons Logging. Para obter mais informações, consulte Commons Logging Bridge
Baixe o programa Log4J JAR
Para usar o Log4j com oSDK, você precisa baixar o Log4j no site JAR do Apache. O SDK não inclui JAR o. Copie o JAR arquivo para um local que esteja no seu classpath.
O Log4j usa um arquivo de configuração, log4j.properties. Os arquivos de configuração de exemplo são mostrados abaixo. Copie esse arquivo de configuração para um diretório no classpath. Os arquivos Log4j JAR e log4j.properties não precisam estar no mesmo diretório.
O arquivo de configuração log4j.properties especifica propriedades como nível de registro em log
-
log4j.logger.com.amazonaws
-
log4j.logger.org.apache.http.wire
Definir o classpath
Tanto o arquivo Log4j JAR quanto o log4j.properties devem estar localizados em seu classpath. Se você estiver usando o Apache Antpath
do arquivo Ant. O exemplo a seguir mostra um elemento de caminho do arquivo Ant para o Amazon S3
exemplo
<path id="aws.java.sdk.classpath"> <fileset dir="../../third-party" includes="**/*.jar"/> <fileset dir="../../lib" includes="**/*.jar"/> <pathelement location="."/> </path>
Se estiver usando o EclipseIDE, você pode definir o classpath abrindo o menu e navegando até Project | Properties | Java Build Path.
Erros e avisos específicos do serviço
Recomendamos que você sempre deixe a hierarquia do registrador “com.amazonaws” definida como "" WARN para capturar qualquer mensagem importante das bibliotecas do cliente. Por exemplo, se o Amazon S3 cliente detectar que seu aplicativo não fechou corretamente InputStream
e pode estar vazando recursos, o cliente S3 reportará isso por meio de uma mensagem de aviso aos registros. Isso também garante que as mensagens serão registradas em log se o cliente enfrentar algum problema ao processar requisições ou respostas.
O arquivo log4j.properties a seguir define comoWARN, o que faz rootLogger
com que mensagens de aviso e erro de todos os registradores na hierarquia “com.amazonaws” sejam incluídas. Como alternativa, você pode definir explicitamente o registrador com.amazonaws como. 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 em log do resumo de requisição/resposta
Cada solicitação para um AWS service gera um ID de AWS solicitação exclusivo que é útil se você tiver problemas com a forma como um AWS service está lidando com uma solicitação. AWS IDsas solicitações podem ser acessadas programaticamente por meio de objetos de exceção no SDK para qualquer chamada de serviço com falha e também podem ser relatadas por meio do nível de DEBUG registro no registrador “com.amazonaws.request”.
O arquivo log4j.properties a seguir permite um resumo das solicitações e respostas, incluindo a solicitação. 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
Aqui está um exemplo da saída do 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
Registro em log detalhado
Em alguns casos, pode ser útil ver as solicitações e respostas exatas que eles AWS SDK for Java enviam e recebem. Você não deve habilitar esse registro em sistemas de produção porque escrever grandes solicitações (por exemplo, um arquivo sendo carregado Amazon S3) ou respostas pode reduzir significativamente a velocidade de um aplicativo. Se você realmente precisar acessar essas informações, poderá ativá-las temporariamente por meio do registrador Apache HttpClient 4. Ativar o DEBUG nível no org.apache.http.wire
registrador permite registrar todos os dados de solicitação e resposta.
O arquivo log4j.properties a seguir ativa o registro completo de conexões no Apache HttpClient 4 e só deve ser ativado temporariamente, pois pode ter um impacto significativo no desempenho do seu aplicativo.
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 latência
Se você estiver solucionando problemas e desejar ver métricas, como qual processo está consumindo mais tempo ou se o lado do servidor ou do cliente têm mais latência, o registrador de latência será útil. Defina o com.amazonaws.latency
registrador como para DEBUG habilitar esse registrador.
nota
Esse registrador só estará disponível se SDK as métricas estiverem ativadas. Para saber mais sobre o pacote de SDK métricas, consulte Habilitando métricas para AWS SDK for Java o.
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
Aqui está um exemplo da saída do 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]