Sobes.tech
Middle

Quais são as formas de configurar o log4j?

sobes.tech IA

Resposta da IA

log4j pode ser configurado de uma das seguintes formas:

  1. Programaticamente: A configuração é definida diretamente no código Java.

    // Exemplo de configuração programática
    org.apache.log4j.BasicConfigurator.configure();
    org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger.getRootLogger();
    rootLogger.setLevel(org.apache.log4j.Level.DEBUG);
    org.apache.log4j.ConsoleAppender consoleAppender = new org.apache.log4j.ConsoleAppender(
            new org.apache.log4j.PatternLayout("%d [%t] %-5p %c - %m%n")
    );
    rootLogger.addAppender(consoleAppender);
    
    org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(MyClass.class);
    logger.debug("Mensagem de depuração");
    
  2. Através de um ficheiro de propriedades: A configuração é definida num ficheiro .properties. O Log4j procura automaticamente um ficheiro chamado log4j.properties no classpath.

    # Exemplo de ficheiro log4j.properties
    log4j.rootLogger=DEBUG, console, file
    
    # Configuração do appender de consola
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
    
    # Configuração do appender de ficheiro
    log4j.appender.file=org.apache.log4j.FileAppender
    log4j.appender.file.File=application.log
    log4j.appender.file.Append=true
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
    
  3. Através de um ficheiro XML: A configuração é definida num ficheiro .xml. O Log4j pode encontrar automaticamente o ficheiro log4j.xml no classpath.

    <!-- Exemplo de ficheiro log4j.xml -->
    <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    
        <appender name="console" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
            </layout>
        </appender>
    
        <appender name="file" class="org.apache.log4j.FileAppender">
            <param name="File" value="application.log"/>
            <param name="Append" value="true"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
            </layout>
        </appender>
    
        <root>
            <level value="DEBUG"/>
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        </root>
    
    </log4j:configuration>
    

Ordem de carregamento da configuração (por padrão):

O Log4j procura ficheiros de configuração na seguinte ordem:

  1. A propriedade do sistema log4j.configuration (indica o caminho para o ficheiro de configuração).
  2. O ficheiro log4j.xml no classpath.
  3. O ficheiro log4j.properties no classpath.
  4. Se nenhum ficheiro for encontrado, é usada a configuração básica (ConsoleAppender com nível ERROR).

Prioridade da configuração:

  • A configuração programática tem prioridade mais alta.
  • Segue-se a configuração indicada através da propriedade do sistema.
  • O ficheiro XML tem prioridade sobre o ficheiro de propriedades se ambos estiverem presentes e nenhuma propriedade do sistema for especificada.