Log4J - Criar outro appender para outra classe?

Pessoal, boa tarde!

Estou com uma dificuldade de implementar o Log4J em mais de uma classe.
A geração do arquivo de LOG está correta para a classe Leitura, porém a classe parametros eu não consigo gerar o LOG.


* Classe de Leitura do Arquivo XML
 * @author alexandre.pestana
 *
 */
public class Leitura extends Parametros{
	
	static Logger logger = Logger.getLogger(Leitura.class);
		
	public static void main(String[] args) throws IOException {
		
		//Criando Objeto para armazenamento das variaveis
		Parametros parametros = new Parametros();
		
		//Carregando configurações em Log4J
		//BasicConfigurator.configure();
		
		String padrao_log = "Milisegundos desde o ínicio do programa: %r %n";
		padrao_log += "Classe: %C %n";
		padrao_log += "Data: %d{dd/MM/yyyy} %n";
		padrao_log += "Hora: %d{HH:mm:ss} %n";
		padrao_log += "Local: %l %n";
		padrao_log += "Mensagem: %m %n";
		padrao_log += "----------------------------------------%n";
		
                                // criando um PatternLayout passando o output pattern criado
		PatternLayout layout = new PatternLayout(padrao_log);
		
		
		// cria o layout
		//SimpleLayout layout = new SimpleLayout();
		// cria o appender do tipo FileAppender
		FileAppender appender = null;
		try{
		      /* criação do FileAppender
		      passando o layout, nome do arquivo, true se o arquivo será
		      sobrescrito e false se não for sobrescrito
		      */
		      appender = new FileAppender(layout,"output.log",true);
		}
		catch(Exception e){
		       // logando uma exception, caso ocorra
		       logger.error("Erro: " + e.getMessage());
		}
		
		// adicionando o appender criado ao logger
		logger.addAppender(appender);
		// ajustando o nível do log
		logger.setLevel((Level) Level.DEBUG);
		
		// logando
		logger.info("Logando um INFO");

Na classe Parametros se eu colocar:

static Logger logger = Logger.getLogger(Parametros.class);

Apresenta a seguinte mensagem de erro:

log4j:WARN No appenders could be found for logger (br.Gates.MoverOF.Parametros).
log4j:WARN Please initialize the log4j system properly.

Se eu substituir por:

static Logger logger = Logger.getLogger(Leitura.class);

Funciona, porém no log aparece tudo como classe Leitura.

Agora vem a pergunta…

Eu vou ter que carregar a configuração de Log4J em todas as classes individuais com appenders diferentes? Não ira ficar muito lento o processo?

Obrigado…

Att,

Alexandre Pestana

Configura o log4j com um arquivo xml. O arquivo tem chamar log4j.xml. Segue um exemplo que a gente usa em um projeto aqui na empresa. No caso do exemplo a aplicação gera 3 arquivos de log.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

	<appender name="Gateway" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${catalina.home}/logs/gateway.log"/>
        <param name="threshold" value="trace"/>
		<layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd/MM/yy HH:mm:ss,SSS} %5p %c{1} : %C{1} - %m%n"/>
        </layout>
    </appender>
    
	<appender name="Gateway-Info" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${catalina.home}/logs/gateway_info.log"/>
        <param name="threshold" value="info"/>
		<layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd/MM/yy HH:mm:ss,SSS} %5p %c{1} : %C{1} - %m%n"/>
        </layout>
    </appender>
	
	<appender name="Gateway-Hibernate" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${catalina.home}/logs/gateway_hibernate.log"/>
        <param name="threshold" value="info"/>
		<layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd/MM/yy HH:mm:ss,SSS} %5p %c{1} : %C{1} - %m%n"/>
        </layout>
    </appender>
	
	<category name="br">
        <priority value="info"/>
        <appender-ref ref="Gateway-Info"/>
    </category>
	
	<category name="org.hibernate">
        <priority value="trace"/>
        <appender-ref ref="Gateway-Hibernate"/>
    </category>
	
    <root>
    	<priority value="trace"/>
        <appender-ref ref="Gateway"/>
    </root>
    
</log4j:configuration>