Esta página foi revisada para considerar as configurações da atualização Waterdrop (1.6.4).

Caso possua uma atualização 1.6.0 à 1.6.3 acesse: Como realizar a gestão de logs do fluig da release 1.6.0 a 1.6.3?

Para atualizações 1.5.13 ou inferior, acesse: Como realizar a gestão de logs do fluig na release 1.5.13 e inferiores?

Índice

Introdução

Em alguns casos, para obter maiores informações sobre um determinado erro, pode ser necessário ativar um log mais detalhado.


Como funciona?

As configurações de log são realizadas por instalação da plataforma e são definidas no arquivo 'domain.xml' localizado em [Instalação fluig]/appserver/domain/configuration.

No caso de um ambiente em alta disponibilidade, as alterações nas configurações de log devem ser efetuadas em todas as máquinas do cluster.

A configuração de log consiste basicamente em dois tipos de itens: 'handlers' e 'loggers'.

O 'handler' é responsável pela forma de processamento/armazenamento dos registros de log, enquanto o 'logger' é responsável por definir o nível de um pacote específico e por qual(is) 'handler(s)' este pacote será tratado.

Por exemplo, o 'handler' do arquivo de log padrão da plataforma (server.log) possui a seguinte configuração:

<periodic-rotating-file-handler autoflush="true" name="FILE">
    <formatter>
        <named-formatter name="PATTERN"/>
    </formatter>
    <file path="server.log" relative-to="jboss.server.log.dir"/>
    <suffix value=".yyyy-MM-dd"/>
    <append value="true"/>
    <level name="INFO"/>
</periodic-rotating-file-handler>

Basicamente esta configuração define que o arquivo de log definido na propriedade <file> (server.log), será rotacionado no final de cada dia, ou seja, o conteúdo que estava no arquivo será salvo em outro arquivo contendo a data como sufixo, seguindo o padrão definido na propriedade <suffix>, e o arquivo original será zerado para registrar as próximas mensagens. 

É importante verificar que a propriedade <level> deste 'handler' possui, por padrão, o valor 'INFO'. Isso significa que este 'handler' irá registrar apenas mensagens de nível "INFO" ou superior. Sendo assim, mesmo que existam pacotes enviando mensagens em nível de 'DEBUG', eles não serão registrados, pois 'DEBUG' é um nível mais baixo que 'INFO'. Caso deseje visualizar mensagens em nível de 'DEBUG' no arquivo 'server.log', é necessário primeiramente alterar a configuração de '<level name="INFO"/>' para '<level name="DEBUG"/>'.

Os níveis de log seguem a seguinte ordem, sendo do nível mais baixo ao mais alto:

  1. ALL
  2. FINEST
  3. FINER
  4. TRACE
  5. DEBUG
  6. FINE
  7. CONFIG
  8. INFO
  9. WARN
  10. WARNING
  11. ERROR
  12. SEVERE
  13. FATAL

Exemplo, se um 'handler' for definido com level igual a 'INFO', irá registrar apenas mensagens de nível 'INFO', 'WARN', 'WARNING', 'ERROR', 'SEVERE' e 'FATAL'. Além dos níveis acima, também pode ser configurado o nível 'OFF', nos casos em que nenhuma mensagem deve ser registrada.

Cada configuração de 'logger' está atrelada à um ou mais 'handlers'. Quando esta informação não é configurada na declaração de um 'logger', é considerada a configuração realizada para o 'root-logger', que no caso do fluig possui a configuração abaixo:

<root-logger>
    <level name="INFO"/>
    <handlers>
        <handler name="CONSOLE"/>
        <handler name="FILE"/>
        <handler name="USERLOGGING"/>
    </handlers>
</root-logger>

Neste caso, todos os 'loggers' que não definirem um 'handler' específico, serão processados por estes três 'handlers: CONSOLE' (caso seja iniciado via script no terminal do sistema operacional), 'FILE' (arquivo server.log) e 'USERLOGGING' (ver aqui).

A configuração de um 'logger' normalmente é feita conforme abaixo:

<logger category="io.undertow.request">
    <level name="FATAL"/>
</logger>


Configuração via API

À partir da atualização Waterdrop (1.6.4) é possível modificar as configurações de log via API. Para acessá-la através do navegador é só utilizar o endereço (IP ou hostname e porta) do seu ambiente com o contexto '/management/swagger-ui/'. Conforme o exemplo abaixo:

protocolo://[host_fluig]/management/swagger-ui/

A API de Logs, disponível nesse endereço, permite verificar e alterar configurações de 'handlers' e de 'loggers', incluíndo facilitadores para alterar níveis de log por funcionalidade (alias), sem a necessidade de saber os nomes dos pacotes ou das classes específicas.

Um dos 'alias' disponíveis, por exemplo, é o 'INDEX'. Ao passar este valor no parâmetro 'category' dos métodos de gerenciamento de 'loggers', serão modificados os níveis de log dos pacotes referentes a indexação na plataforma, sem a necessidade de realizar várias chamadas e nem de conhecer quais são estes pacotes.

A documentação completa da API também encontra-se na URL 'http://<endereco_fluig>/management/swagger-ui/', bem como facilitadores para realizar requisições parametrizadas à partir do navegador.

Se o ambiente estiver em alta disponibilidade, é necessário realizar os procedimentos acima em cada máquina do cluster.


Visualizando o log de Debug

Após realizada as configurações, o log pode ser monitorado a partir do arquivo [Instalação fluig]/appserver/domain/servers/fluig1/log/server.log.

Use uma das ferramentas de análise recomendadas para visualizar o arquivo ou, caso o sistema operacional seja Linux, é possível usar o comando:

tail -f [Instalação fluig]/appserver/domain/servers/fluig1/log/server.log