Í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 <INSTALL_DIR>/appserver/domain/configuration/domain.xml. No caso de um ambiente em cluster, as alterações na configuração de log devem ser efetuadas em todas as máquinas do cluster.

A configuração de log consiste basicamente em dois tipos de items: 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 se 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, do nível mais baixo ao mais alto:

Ou seja, um handler definido com level="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á atralada à 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 Water Drop (1.6.4), também é possível modificar as configurações de log via API, que pode ser acessada no browser através do endereço (ip ou hostname e porta) do seu ambiente com o contexto "/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.

Configuração via interface de gerenciamento do servidor de aplicação

Usuário do Servidor de Aplicação

O primeiro passo para utilizar a interface de gerenciamento do servidor de aplicação é ter um usuário de gerenciamento. Caso não possua um usuário de gerenciamento do servidor de aplicação, é necessário criá-lo:

  1. No prompt de comando do Windows ou no console do Linux, navegue até o diretório bin do servidor de aplicação ([Instalação do fluig]/appserver/bin);
  2. Executar o script add-user.bat ou add-user.sh;
  3. Na primeira pergunta exibida, apenas digite ENTER;
  4. Informe o nome do usuário na segunda pergunta;
  5. Escolha uma senha e digite-a na terceira e quarta perguntas;
  6. Após a confirmação da senha, digite ENTER na quinta pergunta;
  7. Na sexta e sétima perguntas é necessário digitar "Sim" (ou "Yes", se o console estiver em inglês) e confirmar com a tecla Enter

Adicionando Classe ou Pacote 

  1. Acesse http://[IP ou hostname]:9990 e informe o usuário e senha criados no passo anterior;
  2. Acesse ConfigurationSubsystemCoreLogging;
  3. Na tela de log, acesse a opção Log Categories;
  4. Clique em Add;
  5. Em name informe o pacote ou classe a ser monitorada (Ex.: com.datasul.technology.webdesk.workflow.engine );
  6. Defina a opção Debug como Log Level e salve;
  7. Selecione o item recém adicionado na listagem, e em Details selecione Handlers;
  8. Clique em Add, selecione Chrono e salve.

Demonstração

Assista aqui ao vídeo demonstrativo.

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/chrono.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/chrono.log