APIs – .NET – Parte 2 – Logs

Criando Logs

Logs nos ajudam a descobrir o que deu errado durante a execução de uma aplicação, e nessa etapa iremos desenvolver o nosso serviço de log, usando o NLog

Vamos começar criando dois projetos, o primeiro chamado Contracts, onde teremos as interfaces do nosso serviço de log. No segundo, de nome LoggerService, iremos escrever a nossa lógica. Ambos projetos são do tipo ‘Class Library’.

Com os dois projetos criados, precisamos fazer as referências necessárias. Navegue até o explorador de soluções. Em seguida, no projeto LoggerService, clique com o botão direito em Dependências e escolha ‘Add Project Reference’, selecionando Contracts.

No projeto principal, faça o mesmo para adicionar referência, mas ao projeto LoggerService, que também está fazendo referência de tabela ao projeto Contracts.

NLOG

O nosso serviço de log terá quatro funções que registram mensagens dos tipos:

 Mensagens Informativas

 Mensagens de Aviso

 Mensagens de Debug

 Mensagens de Erro

Para isso iremos criar uma interface chamada ILoggerManager no projeto Contracts:

Precisamos agora instalar a biblioteca NLog em nosso projeto LoggerService, muito utilizada pela comunidade .net core.

 No projeto LoggerService, clique com o botão direito em Dependências e escolha ‘Manage Nuget Packages’. Depois, basta pesquisar pelo nome da biblioteca pesquisada, NLog no caso.

Implementando a Interface

No projeto LoggerService iremos adicionar uma nova classe, a LoggerManager e implementaremos a interface ILoggerManager:

Como podemos ver, os nossos métodos apenas encapsulam os do NLog, e agora temos que definir todas as constantes (onde ficará o arquivo de log, nome gerado etc.) em um arquivo de texto no projeto principal e salvá-lo como nlog.config.

Precisamos agora configurar o serviço de log para seu uso, e a primeira etapa é atualizar o construtor da classe Startup:

Estamos usando a classe estática LogManager do NLog com o método LoadConfiguration para fornecer um caminho para o arquivo de configuração.

Agora temos que adicionar o serviço logger no contexto .NET e existem três maneiras para isso:

 Ao chamar o método services.AddSingleton, podemos criar um serviço na primeira vez que o solicitamos e, em seguida, em cada a solicitação chamará a mesma instância do serviço.

 Ao chamar o método services.AddScoped, significa que sempre que enviamos um HTTP pedido ao aplicativo, uma nova instância do serviço será criada.

 Ao chamar o método services.AddTransient, significa que se vários componentes precisam do serviço, ele será criado novamente para cada solicitação destes.

Então, vamos adicionar um novo método na classe ServiceExtensions:

Depois precisamos modificar o método ConfigureServices para que inclua nosso método de extensão recém-criado:

Para usar um serviço de logger nesse caso, tudo o que precisamos fazer é injetar no construtor da classe que o utilizará e .NET Core resolverá esse serviço, através da injeção de dependência.

No Solution Explorer, vamos abrir a pasta Controllers e localize a classe WeatherForecastController. Vamos modificá-lo:

Como resultado teremos duas strings. Agora vá para a pasta que você especificou no arquivo nlog.config e verifique o resultado. Vocês deve ver duas pastas: a pasta internal_logs e a pasta de logs. Dentro da pasta de logs, você deve encontrar um arquivo com os seguintes logs:

Por fim concluímos a criação de logs em nossa aplicação. Até o próximo capítulo !

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *