Graylog + Docker + SpringBoot — PARTE 2

Kleber Nunes
2 min readSep 5, 2019

--

A QUEM INTERESSAR

Parte 1

Parte 3

Nessa parte vamos ver como configurar a aplicação Spring para enviar nossos logs para o graylog, para facilitar a vida daqueles que querem dar uma rápida olha no código já vou deixar o link do github no inicio https://github.com/MrSpock182/logging

Vamos começar pelo dependências que nossa aplicação irá precisa, para esse exemplo estou utilizando o maven.

AS DEPENDÊNCIAS

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

<dependency>
<groupId>biz.paluch.logging</groupId>
<artifactId>logstash-gelf</artifactId>
<version>1.13.0</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

Veja que removemos o logging do starter web do Spring, para adicionar o log4j2, são necessárias apenas essas dependências para nosso projeto. =)

Para enviamos nossos logs para o graylog pelo GELF via UDP vamos precisar configurar nosso arquivo xml do log4j2.

A CONFIGURAÇÃO

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="60">
<Properties>
<Property name="logstash.host">udp:localhost</Property>
<Property name="logstash.port">12201</Property>
</Properties>
<Appenders>
<Console name="Console-Appender" target="SYSTEM_OUT">
<PatternLayout>
<pattern>
[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
</Console>
<Gelf name="Gelf" host="${logstash.host}" port="${logstash.port}" version="1.1"
extractStackTrace="true" filterStackTrace="false" originHost="%host{fqdn}">
<Field name="timestamp" pattern="%d{dd MMM yyyy HH:mm:ss,SSS}"/>
<Field name="level" pattern="%level"/>
<Field name="simpleClassName" pattern="%C{1}"/>
<Field name="className" pattern="%C"/>
<Field name="server" pattern="%host"/>
<Field name="application" pattern="logging"/>
<Field name="tag" pattern="log"/>
</Gelf>
</Appenders>
<Loggers>
<Logger name="org.springframework.web" level="info" additivity="false">
<AppenderRef ref="SpringBoot-Appender"/>
<AppenderRef ref="Console-Appender"/>
</Logger>
<Logger name="com.example.logging" level="info" additivity="false">
<AppenderRef ref="App-Appender"/>
<AppenderRef ref="Console-Appender"/>
<AppenderRef ref="Gelf"/>
</Logger>
<Root level="info">
<AppenderRef ref="Console-Appender"/>
<AppenderRef ref="Gelf"/>
</Root>
</Loggers>
</Configuration>

Obs1.: Nesse arquivo é necessário alterar o caminho da pasta para o caminho presente na sua aplicação.

Obs2.: Existe a possibilidade de além de enviar o log para o graylog, podemos criar os arquivos de texto de log.

Feito isso só vamos precisar criar os pontos de log da aplicação:

private static Logger logger = LogManager.getLogger(SuaClasse.class);

Feito isso vamos estar muito proximo de poder ver nossos logs no dashboard do graylog, mas isso vamos ver na próxima parte, até la.

--

--