Azure Mobile Service–Logging local e na nuvem com backend .NET WebAPI

Microsoft Azure & WebAPI

Um dos pontos de maior adoção ao backend .NET WebAPI para o serviços mobile do Microsoft Azure, é a facilidade de testar localmente. Fora isso, Se comparado a arquitetura do backend NodeJS temos muito mais capacidade em realizar debug e auditoria em nossa aplicação.

fig04

Neste post vou exemplificar como utilizar o mecanismo de log do Microsoft Azure Mobile Services com backend .NET WebAPI local e na nuvem de forma rápida e simples.

O primeiro passo e criar um serviço mobile caso você ainda não o tenha feito. Essa é uma tarefa realmente muito simples porém se você nunca o fez pode se  basear no artigo anterior: Azure Mobile Service – Primeiros passos com backend .NET WebAPI.

Neste artigo vou utilizar o mesmo serviço que havia criado no artigo anterior. Para isso vou no portal de gestão do Microsoft Azure, acesso meu serviço (no caso meriatwebapi) e acessando a nuvenzinha azul clico em CONNECT AN EXISTING WINDOWS OR WINDOWS PHONE APP. Será baixado um serviço com o exemplo ToDo já implementado, como o descrito anteriormente.

Vamos iniciar implementando o LOG para os testes locais. Para isso acesse a classe TodoItemController na pasta Controllers, e insira os seguintes códigos nos métodos GetAllTodoItems e GetTodoItem respectivamente:

  • this.Services.Log.Info("[GetAllTodoItems] GET all items");
  • this.Services.Log.Info("[GetTodoItem] GET item: " + id ?? "<<no id>>");

O seu código deve ficar assim:

FIG02

Simples assim… Habemus LOG!!!

Vale notar que o LOG é uma propriedade de ApiServices do WindowsAzure.Mobile.Service, e que está acessível em TableController<T>.

FIG03

 

Rodando Local

Executando o a aplicação localmente, podemos observar os Logs de duas maneiras:

  • Debugando a aplicação e visualizando no Console Output
  • Gravando o LOG fisicamente

Console Output

Apenas rode sua aplicação com o  famoso “F5”. Atache um breakpoint no GetAllTodoItems. Note que seu serviço vai executar no localhost. Ai é só realizar o get (localhost:{sua-porta}/tables/TodoItem).

FIG04

Já na aplicação, abra a console Output e execute os próximos passos até o LOG.

FIG05

Como podemos ver, o LOG vai ser exibido na console Output. É claro que nem sempre estamos debugando a aplicação, mesmo que rodando localmente. Isso nos leva a segunda solução:

Gravando o LOG fisicamente

Neste ponto vamos gravar um arquivo txt em algum lugar. Não tem nada de novo nisso. Vamos apenas criar um um diagnostico para concatenar os logs em um arquivo texto. Para isso vamos alterar nosso Web.config incluindo o seguinte código:

<system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="default" initializeData="C:developmentmylog.txt"
             type="System.Diagnostics.TextWriterTraceListener" />
      </listeners>
    </trace>
  </system.diagnostics>

Seu config vai ficar como o descrito abaixo:

FIG06

Neste caso estou definindo que meus logs devem ser gravados em um arquivo chamado mylog.txt na pasta development no meu diretório C. Executando novamente a aplicação e executando os métodos GetAllTodoItems (http://localhost:50269/tables/TodoItem) e GetTodoItem (http://localhost:50269/tables/TodoItem/1) vamos ter o seguinte:

FIG07

 

Rodando na Nuvem

Esse é realmente simples. Só precisamos publicar as alterações do nosso serviço. Para isso basta clicar com o botão direito no projeto e clicar em Publish.

fig01

Na tela que se segue selecione a opção Microsoft Azure Mobile Services.

fig02

Neste momento será realizado sua autorização e será listados todos os seus serviços bem como a opção de criar um novo serviço para o deploy da aplicação.

fig03

Em nosso caso vamos apenas selecionar o serviço correspondente e realizar o Publish.

Pronto!!! Após a finalização do processo o navegador será aberto na página inicial do nosso serviço hospedado na nuvem. Agora é só realizar o mesmo procedimento dos testes locais.

No meu caso a execução foi:

  • https://meriatwebapi.azure-mobile.net/tables/TodoItem
  • https://meriatwebapi.azure-mobile.net/tables/TodoItem/1

fig06

Para o resultado é só acessar a aba LOGS para visualizar.

fig05

PS: Vale notar que ao executar na nuvem será solicitado sua autenticação no brwoser. É só informar seu usuário da subscription (o nome antes do @ no e-mail de acesso ao portal), e a chave do serviço.

 

Esta é só a introdução e serve de base para que você possa realizar suas implementações necessárias a fim de gerar todos os seus LOGS.

 

Referências:

http://azure.microsoft.com/blog/2014/07/28/azure-mobile-services-net-updates/

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn629482.aspx

Bons estudos e até a próxima pessoal  ;)


Author's profile picture

Vitor is a computer scientist who is passionate about creating software that will positively change the world we live in.

MVP Azure - Cloud Architect - Data science enthusiast


4 minutes to read