Biblioteca para gerenciamento de eventos de log para aplicações desenvolvidas com Spring Boot.
Crie o arquivo de configuração do maven ou inclua o repositório e o servidor no arquivo já existente:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>github</id>
<username>${server.github.username}</username>
<password>${server.github.password}</password>
</server>
</servers>
<activeProfiles>
<activeProfile>general</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>general</id>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/felipemenezesdm/spring-logger-adapter</url>
</repository>
</repositories>
</profile>
</profiles>
</settings>
Inclua a dependência no arquivo pom:
<dependency>
<groupId>br.com.felipemenezesdm</groupId>
<artifactId>spring-logger-adapter</artifactId>
<version>1.0.0</version>
</dependency>
Execute com comando abaixo para download de dependências:
mvn install
O deploy da biblioteca é realizado automaticamente sempre que houver a criação de uma nova tag de versão. Entretanto, se for necessário realizar seu deploy manual, é preciso seguir os passos abaixo:
- No settings.xml, confirmar que o servidor do GitHub está configurado:
<servers> <server> <id>github</id> <username>${server.github.username}</username> <password>${server.github.password}</password> </server> </servers>
- Executar o comando abaixo, substuindo os parâmetros por seus respectivos valores:
mvn deploy -s settings.xml -Dserver.github.username=USERNAME -Dserver.github.password=PASSWORD
Para usar esta biblioteca, basta importar a classe LogHandler e utilizar seus métodos estáticos para definir as fronteiras de log:
import br.com.felipemenezesdm.LogHandler;
public class Application {
public static void main(String[] args) {
LogHandler.info("Message");
// LogHandler.waning("Message");
// LogHandler.error("Message");
}
}
O LogPayload pode ser utilizado para a criação de um payload padronizado para os eventos de log. Ele utiliza o builder pattern, e pode ser implementado da seguinte forma:
import br.com.felipemenezesdm.LogHandler;
import br.com.felipemenezesdm.LogPayload;
public class Application {
public static void main(String[] args) {
LogHandler.info("Message", LogPayload.build()
.setMessage("Message")
.setCorrelationId("ID")
);
}
}
Para o LogPayload, não é necessário definir os atributos "severity", "service ID" e "duration". Por padrão, o atributo "severity" será preenchido a partir do tipo de log iniciado ("info", "warning" ou "error"). O atributo "service ID", por sua vez, pode ser informado no payload, porém será preenchido utilizando a variável de ambiente "APP_SERVICE_ID", quando for nulo. Já o atributo "duration" pode ser definido da seguinte forma:
import br.com.felipemenezesdm.LogHandler;
import br.com.felipemenezesdm.LogPayload;
public class Application {
public static void main(String[] args) {
LogHandler.registerLogger("test"); // Inicialização de novos atributos de log
LogHandler.info("Message", LogPayload.build()
.setLoggerId("test") // Vinculação do payload aos atributos inicializados
.setMessage("Message")
.setCorrelationId("ID")
);
}
}
O método registerLogger(String loggerId) do LogHandler irá inicializar todos od parâmetros individualizados de uma fronteira de log, identificados por um ID único.
O método setLoggerId(String loggerId) do LogPayload irá vincular o payload aos atributos inicializados.
No caso do atributo "duration", é necessário se atentar para o posicionamento do registerLogger, já que ele também inicializará o contador que será utilizado para calcular a duração de execução do trecho de código.
Um exemplo mais prático seria o cálculo de duração de uma consulta na base, que poderia ser feita desta forma:
import br.com.felipemenezesdm.LogHandler;
import br.com.felipemenezesdm.LogPayload;
public class Application {
public static void main(String[] args) {
LogHandler.registerLogger("test"); // Início do contador
repository.getAllUsers(); // Execução da consulta
LogHandler.info("Message", LogPayload.build()
.setLoggerId("test") // Fim do contador
.setMessage("Message")
.setCorrelationId("ID")
);
}
}
Esta biblioteca não utiliza bibliotecas externas para formatação de logs, ou seja, é possível utilizar as configurações que o próprio Spring Boot disponibiliza.
Por padrão, o formato das mensagens de log é:
"%d{[yyyy-MM-dd HH:mm:ss]} ${spring.profiles.active:default}.%p: %m%n"
Para alterar este formato, basta usar a propriedade logging.pattern.console no application.yml:
logging:
pattern:
console: "%d{[yyyy-MM-dd HH:mm:ss]} ${spring.profiles.active:default}.%p: %m%n"