Para enviar mensagens do sistema (saída de log), o servidor PPM usa a interface Java padrão log4J. log4J é uma estrutura flexível para controlar a saída de mensagens de aplicativos Java usando várias mídias (canais de saída). A interface log4J é configurada em um arquivo XML ou em um arquivo de propriedade. Ela consiste em três componentes: agente de log (coleta), layout (formatação) e appender (saída)
O PPM extrai a configuração log4J de um arquivo de propriedade.
Agente de log
O aplicativo Java passa suas mensagens para um determinado agente de log (coletor) que as processa em função de seu tipo. As mensagens podem ser desses tipos (níveis de log): ALL, TRACE, INFO, WARN, ERROR, FATAL, OFF.
Nível de log |
Descrição |
ALL |
Ativa todos os logs. |
TRACE |
Mensagens de tempo de execução muito detalhadas, geralmente combinadas com a saída de estados de erro completos do aplicativo |
DEBUG |
Mensagem de tempo de execução abrangente, descrevendo geralmente o estado interno do aplicativo |
INFO |
Informações ou avisos gerais |
WARN |
Informações sobre estados de aplicativos que não são críticos para o tempo de execução, por exemplo, configurações ausentes ou incorretas |
ERROR |
Erros que levam frequentemente ao cancelamento do componente ativo |
FATAL |
Erros que levam ao cancelamento do aplicativo, por exemplo, falta de recursos |
OFF |
Sem saída de log |
As linhas seguintes definem um agente de log no arquivo de configuração log4J:
<logger name>=<log level>,<appender name 1>, ... , <Appender name n>
Os nomes do agente de log fazem distinção entre maiúsculas e minúsculas. Os nomes formam uma estrutura hierárquica. O elemento raiz é o agente de log de raiz. Os níveis de hierarquia estão separados por um ponto (.). O nível de hierarquia superior transmite sua configuração para o nível inferior, que é então substituído por configurações específicas.
A tabela abaixo ilustra a hierarquia de herança:
Nome do agente de log |
Nível de log associado |
Nível de log herdado |
log4j.rootLogger |
INFO |
nenhum |
log4j.logger.LOG |
DEBUG |
INFO |
log4j.logger.LOG.SRV |
ERROR |
INFO |
Appender
O agente de log passa as mensagens para os appenders (destinatários) que geram as mensagens de determinado forma (layout). Os appenders diferem em termos de saída, por exemplo:
Exemplo de appender do PPM |
Descrição |
console |
As mensagens são enviadas para a console |
logFile |
As mensagens são gravadas em um arquivo |
errorFile |
As mensagens de erro são gravadas em um arquivo |
As linhas seguintes definem um agente de log no arquivo de configuração log4J:
log4j.appender.<name>=<class name>
Pode especificar vários appenders para um agente de log. Todos os appenders de um agente de log geram as mensagens com base em sua configuração.
Alguns usuários escrevem as mensagens no sistema de log do sistema operacional, enviam-nas como e-mails ou enviam-nas pela rede para um determinado servidor de log.
Layout
Pode usar estilos para especificar o formato de saída. Esses estilos são especificados para o appender relevante. Os espaços reservados chave para um estilo incluem:
Espaço reservado |
Descrição |
%c |
Categoria/agente de log (corresponde ao módulo do PPM) |
%C |
Nome de classe, totalmente qualificado |
%d |
Data, por exemplo, %d{HH:mm:ss,SSS} |
%F |
Nome do arquivo |
%L |
Número de linha |
%m |
A própria mensagem |
%M |
Nome do método |
%n |
Quebra de linha |
%p |
Prioridade, nível (INFO, WARN, ERROR, etc.) |
%t |
Nome do encadeamento |
%throwable{0} |
A saída Stacktrace é suprimida. |
Exemplo
O estilo [%t] %-5p %C - %m%n gera a seguinte saída:
[main] INFO org.apache.log4j.Action - O processo foi iniciado