Utilizando Log4j através de uma classe para gerar log

Pessoal,

Criei uma classe onde eu chamo um metodo e ele gera automáticamente a mensagem no log, a classe é a seguinte:


import java.io.IOException;

import org.apache.log4j.Appender;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

public class TesteJava {

	private static Logger logger = Logger.getLogger(TesteJava.class);  
	
		public static void TesteX(){
		
			
				BasicConfigurator.configure(); 
				logger.setLevel(Level.ALL);
			
			    
			    //%d{yyyy-MM-dd HH:mm:ss} - %-5p %c{1}:%L - %m%n"
				try {
					Appender fileAppender = new FileAppender( new PatternLayout("%d{yyyy-MM-dd HH:mm:ss} - %-5p %m%n"), "ArquivoLog" + ".log");
					logger.addAppender(fileAppender); 
				} catch (IOException e) {
					e.printStackTrace();
				} 
			
				
				logger.info("Mensagem:");

		}
		
		
		public static void main(String[] args){
				
			TesteJava.TesteX();
			TesteJava.TesteX();
			TesteJava.TesteX();
		
		}
	
}

Porem, eu gostaria que ele gravasse 1 mensagem a cada vez que eu chamo o método mais o que ele tá fazendo é o seguinte:

Chamei a primeira vez ele grava 1x a mensagem, chamei de novo, ele grava 2x a mesma mensagem, chamei de novo 3 x a mesma mensagem

Olha só como ficou a resposta:


0 [main] INFO testesEtics.TesteJava  - Mensagem:
1 [main] INFO testesEtics.TesteJava  - Mensagem:
1 [main] INFO testesEtics.TesteJava  - Mensagem:
2 [main] INFO testesEtics.TesteJava  - Mensagem:
2 [main] INFO testesEtics.TesteJava  - Mensagem:
2 [main] INFO testesEtics.TesteJava  - Mensagem:

Alguem sabe o que estou fazendo de errado ?

Valeu desde já galera.

Pessoal,

Consegui resolver o problema acima mudando minha classe de login inteira, fiz da seguinte forma:

Criei um arquivo log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

   <appender name="cadastroFTTx" class="org.apache.log4j.RollingFileAppender">
	      <param name="append" value="true"/>
	      <param name="MaxFileSize" value="100MB"/> 
	      <param name="file" value="tests/log/AutomaticTests.log"/>
	      <layout class="org.apache.log4j.PatternLayout">
        		 <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      	  </layout>
   </appender>
   
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
	      <layout class="org.apache.log4j.PatternLayout">
	    		<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
	      </layout>
    </appender>
    
    <category name="testesEtics.Java01">
	      <priority value="INFO" />
	      <appender-ref ref="cadastroFTTx" />
    </category>
    
    <root>
	    <priority value ="INFO" />
	    <appender-ref ref="STDOUT" />
	    <appender-ref ref="cadastroFTTx" />
    </root>
    
</log4j:configuration>

Depois mudei a minha classe que realiza o log para que ela fosse executada da seguinte forma:


import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

public class ControleLogs {

		public static void registraLog(String nome_log, TypeMessage tipo_msg, String mensagem){
	
			Logger logger = Logger.getLogger(nome_log);    
			DOMConfigurator.configure("log4j.xml");
				
			
				 if(tipo_msg.toString().contentEquals("INFO")){
			        	logger.info(mensagem);
			     }
			        
			     if(tipo_msg.toString().contentEquals("WARN")){
			        	logger.warn(mensagem);
			     }
			        
			     if(tipo_msg.toString().contentEquals("FATAL")){
			        	logger.fatal(mensagem);
			     }
			        
			     if(tipo_msg.toString().contentEquals("ERROR")){
			        	logger.error(mensagem);
			     }
			        
			     if(tipo_msg.toString().contentEquals("DEBUG")){
			        	logger.debug(mensagem);
			     }
	        	       
	}
	
}

Após isto os problemas com duplicação de mensagens parou de ocorrer.

Minha unica dúvida agora é o seguinte, meus logs estão sendo gerado todos no mesmo arquivo no caso AutomaticTests.log

Alguem sabe como eu faço para separar em vários arquivos de Log, por exemplo a execução da minha classe 01 quero que seja gerado o log Classe01.log e por ai em diante.

Como ficaria a configuração do *.xml e a chamada java