Definição de log estruturado
Log estruturado é uma técnica de registro de eventos em sistemas de computador, que envolve o armazenamento de informações em um formato padronizado e organizado, facilitando a análise e busca de informações específicas. Em contraste com o log não estruturado, onde as informações são gravadas em texto simples e sem formatação, o log estruturado segue uma estrutura definida, geralmente em formato de chave-valor. Essa estrutura permite que os dados sejam organizados de maneira coerente e significativa, tornando mais fácil a análise de problemas e a identificação de padrões. Além disso, o log estruturado pode ser armazenado em vários tipos de banco de dados, permitindo um acesso mais rápido e eficiente às informações de registro. Em resumo, o log estruturado é uma técnica importante para melhorar a visibilidade e a confiabilidade de sistemas de computador, tornando mais fácil a identificação e resolução de problemas.
Exemplo de logs
Exemplo de log não estruturado
|
|
Nesse exemplo, as informações são gravadas em texto simples e sem formatação definida. As linhas do log contêm um carimbo de data/hora, um nível de log (INFO, DEBUG, ERROR, WARN), e uma mensagem descritiva sobre o evento que ocorreu. No entanto, não há estrutura definida para as informações, tornando difícil a análise e busca de informações específicas, especialmente em grandes conjuntos de dados de log.
Exemplo de log estruturado
|
|
Observe que agora há um campo adicional chamado “username” que foi adicionado ao evento de log que gerou o erro. O valor “joao” que antes estava na mensagem agora foi transformado em uma propriedade, tornando a informação mais facilmente acessível e buscável. Essa é uma das principais vantagens do log estruturado: a capacidade de separar as informações em campos específicos para que possam ser facilmente pesquisadas e analisadas.
O que é o MessageTemplate no Serilog
O MessageTemplate no Serilog é um recurso que permite que as mensagens de log sejam formatadas de maneira mais sofisticada e flexível. Ele é um modelo de mensagem que define uma string de formato contendo marcadores de posição que podem ser substituídos por valores dinâmicos durante a gravação do log. Em vez de simplesmente gravar uma mensagem de log em uma string fixa, o MessageTemplate permite que as mensagens de log sejam formatadas de maneira personalizada, com base em informações específicas do evento de log. O uso de MessageTemplates também pode melhorar o desempenho, reduzindo a sobrecarga de alocação de memória e a conversão de tipos, uma vez que os valores de substituição são processados de forma mais eficiente do que se fossem concatenados em uma única string fixa. Em resumo, o MessageTemplate é uma ferramenta útil para tornar a gravação de logs mais flexível, legível e eficiente.
Para utilizar o MessageTemplate do Serilog, é necessário definir uma string de formato que contenha marcadores de posição para os valores que serão substituídos durante a gravação do log. Os marcadores de posição são definidos entre chaves e podem conter um nome opcional para identificar o valor que será substituído.
|
|
Neste exemplo, a propriedade “Count” é adicionada ao log estruturado para representar o número de eventos pendentes na fila. O valor dessa propriedade é 10, que é o valor de _filaEventos.Count. Além disso, a mensagem de log também é incluída na propriedade “Message”, e o nível de log “Debug” é registrado na propriedade “Level”. A propriedade “Timestamp” contém a data e hora em que o log foi registrado.
Com essa saída, é possível realizar análises mais precisas e filtrar logs de maneira mais eficiente, utilizando as propriedades definidas no log estruturado. O uso de logs estruturados é uma prática recomendada para melhorar a qualidade e a eficiência da gestão de logs em aplicações e sistemas.
Erro comum ao gerar log estruturado
Um erro comum ao gerar uma mensagem de log é ignorar o messageTemplate. No exemplo abaixo é feito a concatenação da propriedade Count com a string definida. Essa prática não permite que o log seja indexado ou que seja utilizado para geração de métricas quantitativas. Também é observado uma ineficiencia na alocação de memória, onde ocorre uma operação de box/unbox do int e a alocação de uma nova string.
|
|
Conclusão
Em conclusão, o MessageTemplate do Serilog é uma ferramenta poderosa para personalizar e formatar mensagens de log de maneira estruturada. Ao definir uma string de formato com marcadores de posição, é possível adicionar propriedades significativas aos logs que permitem análises precisas e filtragem eficiente.
🤯 Informação
Conheça mais sobre o messagem template em https://messagetemplates.org