Json Logger Plugin

Aldo Pondaco Neto
Another Integration Blog
6 min readMar 14, 2024

Dando continuidade a série de artigos, vamos falar sobre Json Logger, vamos explorar as facilidades, vamos ver como ele pode acelerar um desenvolvimento e facilitar o dia a dia de monitoramento e nas investigações necessárias durante o funcionamento de uma API em produção.

O que é o Json Logger?

É um plugin onde permite que a estratégia de log seja padronizada mais facilmente, trazendo informações importantes para uma análise e a identificação a quem pertence as informações que estão sendo exibidas.

Instalação

Para instalar siga os seguintes passos:

  1. Acesse o link: https://github.com/mulesoft-catalyst/json-logger (repositório Github).

2. Baixe o código

3. Descompacte o arquivo em uma pasta de sua escolha.

4. No POM.xml, dentro da pasta json-logger, altere o group_id pelo Id do business group

5. Para realizar o deploy via maven, execute o comando “mvn clean deploy”, lembrando de deixar o settings.xml configurado com as informações da org destino. Com isso o Json Logger será adicionado ao Exchange a org que foi informado.

Adicionando o Json Logger ao Mule Palette

Para utilizar o conector do Json Logger é necessário fazer o login dentro do Anypoint Studio e baixá-lo do exchange que ele foi adicionado.

Para logar ao seu exchange você deve ir ao seu Anypoint Studio -> Mule Palette -> Search in Exchange -> Add account

Após o login basta buscar o Json Logger, selecionar, clicar em “add” e depois em “Finish”, conforme imagem abaixo.

Utilizando o conector Json Logger

Primeiro você deve buscá-lo dentro de sua Mule Palette.

Para começar a utilização do conector, em “Operations” escolha a opção “Logger”, arraste e adicione a mesma em um flow para visualizar o seu comportamento.

Selecione o conector e vá em configurações, é importante se atentar ao “Global Settings” que permitem a identificação e auxilia na análise, as propriedades “Application name”, “Application version” e “Environment” que garantirá que você esteja vendo o log da aplicação, versão e ambiente correto, essas propriedades precisam estar configuradas no .properties para que possam refletir as informações corretas a que se referem.

Para um primeiro teste, do flow acima, será utilizado as configurações padrão onde o mesmo exibirá em seu log apenas o payload de entrada, para o teste em questão foi enviado o seguinte payload.

Dentro do flow foram utilizados as configurações default, conforme print.

O resultado que exibido no log da aplicação foi:

Observe que além da exibição do payload que foi enviado também está sendo exibido informações de controle como o “applicationName”, “applicationVersion” e “environment” que fazem parte das configurações iniciais para utilização desse conector, também é exibido informações como timestamp, o flow e o arquivo XML por exemplo, essas informações ajudam a cercar uma análise.

Agora trocamos nas configurações do campo “Priority” a opção “INFO” pela opção “Error”, com isso poderá ser utilizado o campo até mesmo para alguma lógica a mais de exibição, controle, alertas e monitoramento.

Vamos agora ver o que podemos fazer com um payload exemplo com mais campos, importante observar que existem informações sensíveis que deve-se ter cautela em sua utilização.

Uma boa prática para esse caso é preparar a mensagem que deve ser exibida antes, evitando assim exibir o payload completo, para isso pode-se por exemplo apenas exibir o “id” para que apenas tenha o registro no logo que aquele payload referente ao “id” específico passou pela integração.

Uma outra forma de resolver o problema de dados sensíveis é “mascarar” essa informações configurando no “Json Logger Config” a opção “Content fields data masking”, conforme imagem abaixo.

Dentro dessa opção coloquei o nome dos campos que desejo “utilizar a máscara”, com isso o payload aparecerá da seguinte forma:

Utilizando o Logger Scope

Existe também uma outra forma de usar o Json Logger que é o “Logger Scope”, nele é possível realizar algumas lógicas de forma que você pode trabalhar mais o payload que será exibido no log.

Para o exemplo acima é possível adicionar uma transformação e não perder o payload, basta preencher a “Target Variable” na aba “Advanced” nas configurações do “logger scope” que ao final o payload de será mantido para utilização após “logger scope”.

Caso você deixe o Target Variable vazio, o payload pós Logger scope será o que for produzido ou alterado dentro do componente.

Mas se você deixá- lo preenchido o escopo colocará o “payload interno” dentro da variável e manterá o payload original que já existia antes do Logger scope.

Veja como ficaram os logs:

Log da variável com payload interno:

Log do Payload do flow:

Algo também que pode ser útiil quando falamos de Logger Scope, são as configurações da aba “Generals”

Como você pode ver existem as opções de “Priority” do log (Info, error, trace, etc) e também o “Scope trace point”, no exemplo eu mantive a opção default onde o mesmo informa que o escopo está começando e terminando, conforme mostrado abaixo e qualquer coisa que você colocar no dentro do “Logger Scope” será exibido normalmente e com isso terá um ínicio e fim do escopo demarcado por essas duas mensagens no log.

Antes:

Depois:

Conclusão

O Json Logger é um plugin interessante por facilitar a padronização dos logs, e em um desenvolvimento é de extrema importância essa padronização, pois facilita a construção em tempo de projeto, testes, a análise de algum problema, facilita a adaptação de novos integrantes no time e até mesmo de um time de N1 e N2 que precisam monitorar as APIs de forma constante.

--

--