Giter Site home page Giter Site logo

spring-logger-adapter's Introduction

Spring Logger Adapter

Biblioteca para gerenciamento de eventos de log para aplicações desenvolvidas com Spring Boot.

Tópicos

Instalação com Maven

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

Deploy manual

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:

  1. 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>
  2. 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
    

Uso

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")
        );
    }
}

Configuração

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"

spring-logger-adapter's People

Contributors

felipemenezesdm avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.