Ola pessoal!
Nunca sei quando a duvida é basica ou avançada ^^ Vamos la. Eu fiz a classe a seguir:
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.log4j.Appender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
public class Log {
static Logger logger;
public static synchronized void log(String str, String color) {
logger.info("<div style=\"background-color: #" + color + ";\">" + str + "</div>");
}
public static void init(){
File file = new File("C://logger" + new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date()) + ".html");
if(logger != null && file.exists()){
System.out.println("inicializado de novo...");
return;
}
try{
logger = null;
logger = Logger.getLogger(Log.class);
logger.setLevel(Level.INFO);
String nome = "C://logger" + new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date()) + ".html";
Appender fileAppender = new FileAppender(
new PatternLayout("%m%n"),
nome);
logger.addAppender(fileAppender);
System.out.println("criado: " + nome);
}catch(Exception e){
e.printStackTrace();
}
}
}
Apenas para fazer um teste. Chamo a função init varias vezes no meu programa, de 3 em 3 segundos. Mas estou com um problema, pois não consigo desreferenciar os arquivos anteriores, por exemplo,
Eu quero que nos 3 primeiros segundos ele mande as informações para o blablabla2007-09-06 13-42-40.log
e depois de 3 segundos ele irá para o arquivo blablabla2007-09-06 13-42-43.log
e assim por diante. Sendo que, de 3 em 3 segundos eu estou chamando o método init()…
O problema é que só deve escrever no log atual (dos atuais 3 segundos), mas ele sempre está escrevendo no atual e nos últimos criados. Alguem pode me ajudar em como desreferenciar os antigos logs?
Obrigado,