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á.
Registro em log
O AWS SDK para Kotlin configura um registrador SLF4JLoggerProvider
de telemetria. ComSLF4J, que é uma camada de abstração, você pode usar qualquer um dos vários sistemas de registro em tempo de execução. Os sistemas de registro suportados incluem Java Logging APIs
Atenção
Recomendamos que você use o registro de conexões somente para fins de depuração. (O registro de cabos é discutido abaixo.) Desative-o em seus ambientes de produção porque ele pode registrar dados confidenciais, como endereços de e-mail, tokens de segurança, API chaves, senhas e AWS Secrets Manager segredos. O registro eletrônico registra a solicitação ou resposta completa sem criptografia, mesmo para uma HTTPS chamada.
Para solicitações ou respostas grandes (como o upload de um arquivo para o Amazon S3), o registro detalhado de conexões também pode afetar significativamente o desempenho do seu aplicativo.
Embora qualquer biblioteca SLF4J
de log compatível possa ser usada, este exemplo permite a saída de log dos JVM programas SDK in usando o Log4j 2:
Dependências do Gradle
(Você pode navegar até o X.Y.Z
link para ver a versão mais recente disponível.)
implementation("org.apache.logging.log4j:log4j-slf4j2-impl:
X.Y.Z
")
Arquivo de configuração do Log4j 2
Crie um arquivo nomeado log4j2.xml
em seu resources
diretório (por exemplo,<project-dir>/src/main/resources
). Adicione a seguinte XML configuração ao arquivo:
<Configuration status="ERROR"> <Appenders> <Console name="Out"> <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} %-5p %c:%L %X - %encode{%m}{CRLF}%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Out"/> </Root> </Loggers> </Configuration>
Essa configuração inclui o %X
especificador no pattern
atributo que ativa o registro MDC (contexto de diagnóstico mapeado).
O SDK adiciona os seguintes MDC elementos para cada operação.
- rpc
-
O nome do invocadoRPC, por exemplo
S3.GetObject
. - sdkInvocationId
-
Uma ID exclusiva atribuída pelo cliente do serviço para a operação. O ID correlaciona todos os eventos de registro relacionados à invocação de uma única operação.
Especifique o modo de registro para mensagens em nível de fio
Por padrão, o AWS SDK para Kotlin não registra mensagens em nível de fio porque elas podem conter dados confidenciais de API solicitações e respostas. No entanto, às vezes você precisa desse nível de detalhe para fins de depuração.
Com o KotlinSDK, você pode definir um modo de log no código ou usando as configurações do ambiente para ativar as mensagens de depuração para o seguinte:
-
Solicitações HTTP
-
Respostas HTTP
O modo de log é apoiado por um campo de bits em que cada bit é um sinalizador (modo) e os valores são aditivos. Você pode combinar um modo de solicitação e um modo de resposta.
Definir o modo de registro no código
Para optar pelo registro adicional, defina a logMode
propriedade ao criar um cliente de serviço.
O exemplo a seguir mostra como habilitar o registro de solicitações (com o corpo) e a resposta (sem o corpo).
import aws.smithy.kotlin.runtime.client.LogMode // ... val client = DynamoDbClient { // ... logMode = LogMode.LogRequestWithBody + LogMode.LogResponse }
Um valor de modo de log definido durante a construção do cliente de serviço substitui qualquer valor de modo de log definido do ambiente.
Defina o modo de registro a partir do ambiente
Para definir um modo de log globalmente para todos os clientes de serviço não configurados explicitamente no código, use um dos seguintes:
-
JVMpropriedade do sistema:
sdk.logMode
-
Variável de ambiente:
SDK_LOG_MODE
Os seguintes valores que não diferenciam maiúsculas de minúsculas estão disponíveis:
-
LogRequest
-
LogRequestWithBody
-
LogResponse
-
LogResponseWithBody
Para criar um modo de log combinado usando as configurações do ambiente, você separa os valores com um símbolo pipe (|
).
Por exemplo, os exemplos a seguir definem o mesmo modo de log do exemplo anterior.
# Environment variable. export SDK_LOG_MODE=LogRequestWithBody|LogResponse
# JVM system property. java -Dsdk.logMode=LogRequestWithBody|LogResponse ...
nota
Você também deve configurar um SLF4J registrador compatível e definir o nível de registro para DEBUG habilitar o registro em nível de fio.