log4j - Níveis de registro

o org.apache.log4j.Levelníveis. Você também pode definir seus níveis personalizados, classificando oLevel classe.

Nível Descrição
TODOS Todos os níveis, incluindo níveis personalizados.
DEPURAR Designa eventos informativos refinados que são mais úteis para depurar um aplicativo.
INFO Designa mensagens informativas que destacam o progresso do aplicativo em nível de granulação grossa.
ADVERTIR Designa situações potencialmente prejudiciais.
ERRO Designa eventos de erro que ainda podem permitir que o aplicativo continue em execução.
FATAL Designa eventos de erro muito graves que provavelmente levarão o aplicativo ao aborto.
FORA A classificação mais alta possível e destina-se a desligar o registro.
VESTÍGIO Designa eventos informativos mais detalhados do que DEBUG.

Como funcionam os níveis?

Uma solicitação de log de nível p em um logger com nível q é enabledse p> = q. Essa regra está no cerne do log4j. Ele assume que os níveis estão ordenados. Para os níveis padrão, temos ALL <DEBUG <INFO <WARN <ERROR <FATAL <OFF.

O exemplo a seguir mostra como podemos filtrar todas as nossas mensagens DEBUG e INFO. Este programa usa o método setLevel (Level.X) do logger para definir um nível de log desejado:

Este exemplo imprimiria todas as mensagens, exceto Debug e Info:

import org.apache.log4j.*;

public class LogClass {
   private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
   
   public static void main(String[] args) {
      log.setLevel(Level.WARN);

      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

Quando você compila e executa o LogClass programa, ele geraria o seguinte resultado -

Warn Message!
Error Message!
Fatal Message!

Definir níveis usando arquivo de configuração

log4j fornece a você a definição de nível com base no arquivo de configuração que o liberta de alterar o código-fonte quando quiser alterar o nível de depuração.

A seguir está um exemplo de arquivo de configuração que executaria a mesma tarefa que fizemos usando o log.setLevel(Level.WARN) método no exemplo acima.

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = WARN, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

Vamos agora usar nosso programa a seguir -

import org.apache.log4j.*;

public class LogClass {

   private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
   
   public static void main(String[] args) {
   
      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

Agora compile e execute o programa acima e você obterá o seguinte resultado em /usr/home/log4j/log.out arquivo -

Warn Message!
Error Message!
Fatal Message!