Ola PessoALL,

Esses dias me deparei com o seguinte tweet:

Eu sou um grande defensor de logs em aplicações e um defensor maior ainda de termos uma ou mais pessoas responsáveis por lidar com esses logs.
Quem me conhece sabe que sou um grande entusiasta do Application Insights/Azure Log Monitor

Queria compartilhar hoje uma função que me ajuda muito na análise de logs, a função extract

No meu caso costumo ter uma estrutura de logs bem simples nas minhas actions/controllers

logger.LogInformation($"Order {order.Id}: Payment called, response: {response.StatusCode}");

Quando alguma Ordem apresenta problema a primeira coisa que fazemos é olhar os logs tudo o que aconteceu em uma determinada ordem. Para isso podemos analisar a tabela traces do Application Insights.

traces
| where message contains "orderId" 
| order by timestamp asc 

Observem que eu tenho uma linha que retorna um BadRequest do envio de email, com isso eu quero saber todos os order ids que retornaram BadRequest.

traces
| where message endswith "Mail Result - BadRequest"

O próximo passo é extrair todos os order ids.

traces
| where message endswith "Mail Result - BadRequest" 
| project orderId = extract("([0-9.]+)", 1, message), message
| distinct orderId 

Pronto! agora temos somente os order ids das mensagens que queremos.
Para mais informações, segue links da documentação:

É isso ai pessoALL,
até a próxima!