1.Vantagens do Log4j
Log4j é um projeto de código aberto do Apache. Ao usar o Log4j, podemos controlar o local de entrega das informações de log; também podemos controlar o formato de saída de cada log, definindo o nível de cada informação de log; detalhe do processo de geração. O mais interessante é que estes podem ser configurados de forma flexível através de um arquivo de configuração sem modificar o código da aplicação.
Os benefícios do log4j são:
(1) Ao modificar o arquivo de configuração, você pode decidir o destino do console de informações de log, arquivo, componente GUI, até mesmo servidor de soquete, gravador de eventos NT, daemon Syslog UNIX, etc.
(2) Ao modificar o arquivo de configuração, você pode definir o nível de cada mensagem de log para controlar se ela será emitida. Durante o estágio de desenvolvimento do sistema, informações detalhadas de log podem ser impressas para rastrear a operação do sistema. Depois que o sistema estiver estável, a saída do log pode ser desativada, rastreando assim a operação do sistema e reduzindo o código indesejado (System.out.println(.. ....)espere).
(3) O uso do log4j requer um mecanismo de log unificado para todo o sistema, o que favorece o planejamento do sistema.
2. Arquivo de configuração
Log4j consiste em três componentes importantes: a prioridade das informações de log, o destino de saída das informações de log e o formato de saída das informações de log. As prioridades das informações de log de alta para baixa incluem FATAL, ERROR, WARN, INFO, DEBUG, TRACE e ALL, que são usadas para especificar a importância dessas informações de log, respectivamente, o destino de saída das informações de log especifica que o log irá; ser impresso no console ou no arquivo e o formato de saída controla o conteúdo de exibição das informações de log;
2.1 Prioridade das informações de registro
Log4j recomenda usar apenas quatro níveis. As prioridades de cima para baixo são ERROR, WARN, INFO e DEBUG. Através dos níveis aqui definidos, é possível controlar a ativação e desativação do nível correspondente de informações de log na aplicação. Se o nível INFO for definido aqui, todas as informações de log abaixo do nível INFO na aplicação não serão impressas.
2.2 Uso de fontes de saída
Ativar ou desativar seletivamente solicitações de registro é apenas parte da funcionalidade do Log4j. Log4j permite que solicitações de registro sejam enviadas para várias fontes de saída. Em termos de Log4j, uma fonte de saída é chamada de Appender.
Appender inclui console, arquivos, componentes GUI, servidores de soquete remoto, JMS, NT Event Loggers, daemons UNIX Syslog remotos (serviço de log em segundo plano remoto do UNIX). Também pode gravar de forma assíncrona. Um registrador pode definir mais de um anexador. Adicione um anexador a um determinado criador de logs usando o método addAppender. Para um determinado criador de logs, cada solicitação de log válida é encaminhada para todos os anexadores do criador de logs e para os anexadores do criador de logs pai do criador de logs.
2.2.1 ConsoleAppender
Se ConsoleAppender for usado, as informações de log serão gravadas no Console. O efeito é equivalente a imprimir informações diretamente em System.out.
2.2.2 FileAppender
Usando FileAppender, as informações de log serão gravadas no arquivo especificado. Esta deveria ser uma situação usada com mais frequência. Conseqüentemente, o nome do arquivo de saída do log deve ser especificado no arquivo de configuração. A configuração a seguir especifica o nome do arquivo de log log.txt.
log4j.appender.appendername.File=log.txt Observe que appendername é substituído pelo alias de Appender na configuração específica.
Nota: Problema com o caminho do arquivo de log especificado
2.2.3 DailyRollingAppender
Você pode usar o FileAppender para enviar informações de log para um arquivo, mas se o arquivo for muito grande, será inconveniente lê-lo. Neste momento você pode usar DailyRollingAppender. DailyRollingAppender pode gerar informações de log em arquivos separados por data. O arquivo de configuração irá gerar um arquivo de log todos os dias (a hora pode ser definida), e cada arquivo de log registra apenas as informações de log daquele dia:
Copie o código do código da seguinte forma:
log4j.appender.appendername=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Aappendername.file=log
log4j.appender.appendername.DatePattern='.'aaaa-MM-dd
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4 RollingFileAppender
Um novo arquivo é gerado quando o tamanho do arquivo atinge o tamanho especificado.
Copie o código do código da seguinte forma:
og4j.appender.appendername=org.apache.log4j.RollingFileAppender
log4j.appender.appendername.File= ../logs/rlog.log
#Controle o tamanho máximo do arquivo de log
log4j.appender.appendername.MaxFileSize=100 KB
# Arquivar arquivos de log (um arquivo de backup aqui)
log4j.appender.appendername.MaxBackupIndex=1
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern=%p %t %c - %m%n
Este arquivo de configuração especifica a origem de saída appendername, que é um arquivo de log rotativo. O maior arquivo tem 100 KB. Quando um arquivo de log atinge o tamanho máximo, o Log4J renomeará automaticamente rlog.log para rlog.log.1, reconstruirá um novo arquivo rlog.log e girará em sequência.
2.2.5 WriterAppender
Envie informações de log para qualquer local especificado em formato de streaming.
2.3 Configuração de layout
Layout especifica o estilo de saída das informações de log.
2.3.1 Estilo de layout
Copie o código do código da seguinte forma:
org.apache.log4j.HTMLLayout (layout em formato de tabela HTML),
org.apache.log4j.PatternLayout (pode especificar padrões de layout com flexibilidade),
org.apache.log4j.SimpleLayout (contém o nível e a sequência de informações das informações de log),
org.apache.log4j.TTCCLayout (contém informações sobre tempo de geração de log, thread, categoria, etc.)
2.3.2 Formato
Copie o código do código da seguinte forma:
%m exibe a mensagem especificada no código
%p prioridade de saída, nomeadamente DEBUG, INFO, WARN, ERROR, FATAL
%r Exibe o número de milissegundos necessários desde a inicialização do aplicativo até a saída das informações de log.
%c exibe a categoria à qual pertence, geralmente o nome completo da classe.
%t exibe o nome do thread que gerou o evento de log
%n gera um caractere de retorno de carro e alimentação de linha, que é "rn" na plataforma Windows e "n" na plataforma Unix.
%d gera a data ou hora do ponto de tempo do registro. O formato padrão é ISO8601. Você também pode especificar o formato posteriormente, como: %d{yyy MMM dd HH:mm:ss,SSS}. : 18 de outubro de 2002. 22:10:28.921
%l Exibe o local onde ocorreu o evento de log, incluindo o nome da categoria, o thread onde ocorreu e o número da linha no código. Exemplo: Testlog4.main(Test Log4.java:10)
3. Definir níveis de saída de log para diferentes Appenders
Isso pode ser conseguido modificando o Limite do Appender na configuração, como no exemplo a seguir:
Arquivo de configuração:
log4j.rootLogger = depuração,A,B,C
#Saída para console
log4j.appender.A =org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = System.out
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n
# Saída para arquivo de log
log4j.appender.B=org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = logs/log.log
log4j.appender.B.Append = verdadeiro
log4j.appender.B.Threshold = DEBUG # Gera logs acima do nível EBUG
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n
#Salva as informações da exceção em um arquivo separado
log4j.appender.C=org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File = logs/error.log #Exceção nome do arquivo de log
log4j.appender.C.Append = verdadeiro
log4j.appender.C.Threshold = ERROR #Somente gera logs acima do nível ERROR
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = %p %t %c - %m%n
exemplo:
Copie o código do código da seguinte forma:
classe pública TestLog4j
{
público estático void principal(String[] args)
{
PropertyConfigurator.configure("D:/Code/conf/log4j.properties");
Registrador registrador = Logger.getLogger(TestLog4j.class);
logger.debug("depurar");
logger.error("erro");
}
}