Log4J - Erro sobrescreve erro anterior

To com um probleminha na utilização do Log4J…seguinte:
Fiz o seguinte método e coloquei dentro de utils onde é usado por todo sistema:

[code]
public boolean writeLog(Exception ex) {

Logger logger = Logger.getLogger(ApplicationTools.class);
WriterAppender appender = null;
FileOutputStream fos;
Calendar gc = new GregorianCalendar();
Date today = new Date();
//Seta a data de hj para atribuir ao nome padrão do arquivo..
gc.setTime(today);
String strFileName = Constantes.SCHEMA + "_" + gc.get(Calendar.YEAR);
strFileName += "_" + gc.get(Calendar.MONTH + 1) + "_" + gc.get(Calendar.DAY_OF_MONTH) + ".log";

String strPatternLog = "Milisegundos desde o ínicio do programa: %r %n";
strPatternLog += "Classe: %C %n";
strPatternLog += "Data: %d{dd/MM/yyyy} %n";
strPatternLog += "Hora: %d{HH:mm:ss} %n";
strPatternLog += "Local: %l %n";
strPatternLog += "Mensagem: %m %n";
strPatternLog += "----------------------------------------%n";


PatternLayout layout = new PatternLayout(strPatternLog);

//Atribui ao stream de saída..
try{
  fos = new FileOutputStream(strFileName);
  //..
  appender = new WriterAppender(layout, fos);
  //Seta o nível do Logger pela hierarquia de erros..
  logger.addAppender(appender);

  logger.setLevel(Level.INFO);
 

}catch(Exception e){
  //logando uma exception caso oocrra.
  logger.error("Erro: " + e.getMessage());
  return false;
}

logger.error(ex.getMessage(), ex.getCause());

return true;

}[/code]

Ele ta escrevendo corretamento no arquivo…o problema é que qnd gero outro erro ele sobrescreve o erro anterior de uma maneira estranha.
Ex: Se por acaso houvesse UM erro lá, ele sobrescreve esse erro e escreve mais uma linha, ou seja ele faz o “append”, mas os erros ficam sempre igual ao último erro ocorrido…
Já aconteceu isso com alguém.??Alguém sabe a solução??

Você precisa ter essa confguração no código ? você não pode utilizar um properties ou XML para realizar a configuração ?

Você resolve esse problema com a classe: RollingFileAppender