*Nota: a fonte pode ser encontrada aqui.
Embora talvez seja um dos recursos mais monótonos de um SDK, o registro e a instrumentação são provavelmente um dos mais valiosos em termos de encontrar e isolar problemas e garantir que seu aplicativo esteja sendo executado conforme o esperado. Neste post, discutirei como o novo Couchbase SDK 2.0 lida com o registro, quais estruturas ele suporta e como começar a trabalhar com o registro usando o novo cliente.
Todos nós temos algo em comum...
Quando todos nós apoiarmos o Apache Comum.Registro nós fazemos! Brincadeiras à parte, o novo cliente suporta uma variedade de implementações de registro por meio dessa interface comum, portanto, suas opções para um provedor de registro incluem:
- Log4net
- NLog
- System.Console
- Personalizado (faça o seu próprio)
- E outros...
Desde que a implementação de registro que você escolheu seja compatível com a interface Common.Logging, você está pronto para começar!
Como começar
O cliente é fornecido com as dependências do Common.Logging já definidas e incluídas nos arquivos zip que contêm os binários ou gerenciadas pelo pacote Nuget. Para ativar o registro em log no System.Console padrão, basta adicionar a seguinte configuração ao seu App.Config ou Web.Config:
No snippet acima, primeiro definimos uma nova seção de configuração para manter a configuração Logging.Common. Em seguida, adicionamos o elemento de configuração e definimos um adaptador de fábrica para o System.Console e um pouco de formatação. É isso aí! Se você executar o aplicativo, verá que todas as informações de registro são direcionadas para stdout.
O registro em stdout é útil para projetos de teste de unidade e similares, mas não é adequado para implementações de produção. Nesse caso, é melhor usar um appender de fábrica, como log4net ou NLog, e gravar os resultados em um arquivo ou talvez em um banco de dados (hmm, que tal voltar para o Couchbase como um armazenamento de dados operacionais?)
Uso do adaptador Log4Net
Então, isso mostra como usar o ConsoleOutLoggerFactoryAdapter padrão para gravar no stdout, mas e quanto a usar outra estrutura de registro como o Log4Net? Bem, isso é muito fácil de fazer, desde que você tenha referenciado a dependência do Log4Net em seu projeto:
Aqui estamos criando a seção Common.Logging e o elemento de configuração usuais e, em seguida, especificando o Log4NetLoggerFactoryAdapter. Também estamos especificando uma seção e um elemento de configuração do log4net para um appender de arquivo e adicionando o caminho para o arquivo no qual gravar. Isso é mais parecido com uma configuração que você usaria em um ambiente de produção. Observe que você deve ter referências aos seguintes pacotes Nuget em seu arquivo packages.config:
Na maioria dos casos, você usaria o Nuget para gerenciar esse arquivo, mas o uso desse arquivo permite "encurtar" a caixa de diálogo do gerenciador de pacotes do Nuget.
Uma observação rápida sobre os níveis de registro
O cliente usa os seguintes níveis de registro padrão:
- Traço
- Depurar
- Erro
- Fatal
- Avisar
- Informações
Em geral, o Debug é usado para rastrear a execução geral de uma operação. Info é usado para rastrear a parte de gerenciamento de configuração (alterações na topologia do cluster, etc.) do cliente e todas as exceções capturadas (e possivelmente rejeitadas novamente) são registradas como Error.