1. Arquivo de configuração
O formato básico do arquivo de configuração Log4J é o seguinte:
Copie o código do código da seguinte forma:
#Configurar o registrador raiz
log4j.rootLogger = [nível], appenderName1, appenderName2,…
#Configurar destino de saída de informações de log Appender
log4j.appender.appenderName = totalmente.nome.qualificado.of.appender.class
log4j.appender.appenderName.option1 = valor1
…
log4j.appender.appenderName.optionN = valorN
#Configurar o formato (layout) das informações de log
log4j.appender.appenderName.layout = totalmente.qualificado.nome.of.layout.class
log4j.appender.appenderName.layout.option1 = valor1
…
log4j.appender.appenderName.layout.optionN = valorN
Onde [nível] é o nível de saída do log, existem 5 níveis no total:
Copie o código do código da seguinte forma:
FATAL 0
ERRO 3
AVISO 4
INFORMAÇÃO 6
DEPURAÇÃO 7
Appender é o destino de saída do log. Os appenders fornecidos pelo Log4j incluem o seguinte:
Copie o código do código da seguinte forma:
org.apache.log4j.ConsoleAppender(console),
org.apache.log4j.FileAppender (arquivo),
org.apache.log4j.DailyRollingFileAppender (gera um arquivo de log todos os dias),
org.apache.log4j.RollingFileAppender (gera um novo arquivo quando o tamanho do arquivo atinge o tamanho especificado),
org.apache.log4j.WriterAppender (envia informações de log em formato de streaming para qualquer local especificado)
Layout: formato de saída do log Os layouts fornecidos pelo Log4j são os seguintes:
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.)
Parâmetros de impressão: Log4J utiliza um formato de impressão semelhante à função printf em linguagem C para formatar as informações do log, conforme segue:
Copie o código do código da seguinte forma:
%m Envia a mensagem especificada no código %p Prioridade de saída, ou seja, DEBUG, INFO, WARN, ERROR, FATAL
%r Mostra o número de milissegundos necessários desde a inicialização do aplicativo até a saída das informações de log %c Mostra a categoria à qual ele pertence, geralmente o nome completo da classe %t Mostra o nome do thread que gerou o evento de log %n Produza um caractere de retorno de carro e alimentação de linha, a plataforma Windows é "/r/n", a plataforma Unix é "/n"
%d gera a data ou hora do ponto de tempo do log. 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(TestLog4.java: 10)
2. Inicialize o Logger no código: 1) Chame o método BasicConfigurator.configure() no programa: adicione um ConsoleAppender ao gravador raiz, defina o formato de saída como "%-4r [%t] %-5p %c %x - %m%n" por meio de PatternLayout e também O nível padrão para criadores de log com acesso root é Level.DEBUG.
2) A configuração é colocada no arquivo, o nome do arquivo é passado pelos parâmetros da linha de comando e analisado e configurado por meio de PropertyConfigurator.configure(args[x]);
3) A configuração é colocada no arquivo, o nome do arquivo e outras informações são passados através de variáveis de ambiente, e o processo de inicialização padrão do log4j é usado para analisar e configurar;
4) A configuração é colocada no arquivo, o nome do arquivo e outras informações são passadas pela configuração do servidor de aplicação e um servlet especial é usado para completar a configuração.
3. Defina o nível de saída do log para diferentes Appenders:
Ao depurar o sistema, geralmente prestamos atenção apenas à saída do log do nível de exceção, mas geralmente todos os níveis de saída são colocados em um arquivo. Se o nível de saída do log for BUG! ? Então vá encontrá-lo lentamente.
Neste momento, podemos pensar que seria ótimo se pudéssemos enviar as informações da exceção para um arquivo separadamente. Claro, Log4j já fornece tal função. Só precisamos modificar o Limite do Appender na configuração para alcançá-lo, como no exemplo a seguir:
[arquivo de configuração]
Copie o código do código da seguinte forma:
### definir níveis de log ###
log4j.rootLogger = depuração, stdout, D, E
###Saída para console###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### Saída para arquivo de log###
log4j.appender.D =org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = verdadeiro
log4j.appender.D.Threshold = DEBUG ## Logs de saída acima do nível DEBUG
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{aaaa-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### Salvar informações de exceção em um arquivo separado###
log4j.appender.D =org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## Nome do arquivo de log de exceção
log4j.appender.D.Append = verdadeiro
log4j.appender.D.Threshold = ERROR ## Somente gera logs acima do nível ERROR!!!
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{aaaa-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
[Usado no código]
classe pública TestLog4j {
public static void main(String[] args) {
PropertyConfigurator.configure(" D:/Code/conf/log4j.properties ");
Logger logger = Logger.getLogger(TestLog4j. class );
logger.debug("depurar");
logger.error("erro");
}
}
Execute-o e veja se as informações da exceção são salvas em um arquivo separado error.log