Log4j para Desktop!

5 respostas
J

Dae galera… eu estou precisando criar logs da seguinte maneira… qualquer excessão gerada pelo meu aplicativo, é adicionado os dados dessa excessão em um arquivo!! Eu queria saber como eu definir um diretório padrão onde ficará esse arquivo… eu só preciso do log no arquivo… a parte de console não necessito!!
Abraço!

5 Respostas

E
o log4j é muito simples de usar... tem q ter o arquivo de configuração no classpath, pode gerar o arquivo log4j.properties com este conteúdo:
log4j.rootLogger= INFO, stdout
log4j.appender.stdout=org.apache.log4j.RollingFileAppender
log4j.appender.stdout.file=log.txt
log4j.appender.stdout.MaxFileSize=10000KB
log4j.appender.stdout.MaxBackupIndex=3
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d   %-10r %-5p [%t]   %-50c - %m%n

log4j.logger.org.hibernate=info

Repara que aqui vc define o arquivo que vai ser gerado e onde:
log4j.appender.stdout.file

E tem as outras opções para o tamanho do arquivo e talz, e tem mais opções, mas isto ai é o q eu custumo usar...

Depois nas classes é só fazer assim:

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public final class Main {
    private static Logger logger = Logger.getLogger(Main.class);
    private Main() { }
    public static void main(final String[] args) {
        try {
            logger.info("App start...");
            ...
        } catch (Exception e) {
            logger.error("Fatal error!", e);
        }
    }
}
Em todos catchs do teu programa mande pro log a excessão:
logger.error("Fatal error!", e);

Ao rodar a tua aplicação tem q colocar o log.properties no teu classpath:
java -cp "log4j.properties" -jar app.jar

Também pode usar o logger.info e logger.warn como achar melhor para melhorar o detalhe do log...

Ou se colocar o log4j.properties na raiz do .jar também deve funcionar...

J

Cara.. valeu pela resposta.. eu fiz uma classe desse jeito e ela joga o arquivo no diretório da aplicação... teria algum problema dele ter sido implementado assim? Eu não usei o arquivo de propriedades...

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

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

public class ALLogger {

	private static Logger logger = Logger.getLogger(ALLogger.class);

	public static Logger getLogger() {
		return logger;
	}

	private static ALLogger instance = new ALLogger();

	public static ALLogger getInstance() {
		return instance;
	}

	private ALLogger() {
		try {
			BasicConfigurator.configure();
			Appender fileAppender = new FileAppender(new PatternLayout(
					PatternLayout.TTCC_CONVERSION_PATTERN), "sgdLog.log");
			ALLogger.getLogger().addAppender(fileAppender);
		} catch (IOException e) {
			
		}
	}
	
	public void error( String message ) {
		// Adiciona a data ao log
		Date dataAtual = new Date();
		SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");	
		//formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
		ALLogger.getLogger().error( formatter.format(dataAtual) + " " + message);
	}

}

Dae eu uso assim:

public class Teste {

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

	public static void main(String[] args) {
		ALLogger.getInstance().error("Deu erro! ahauh");
	}
}

Ele me gera a seguinte linha:

0 [main] ERROR ALLogger  - 01/04/2008 11:38:57 Deu erro! ahauh
Uma dúvida.. como eu não utilizei o arquivo de configuração, dae ele com a linha
BasicConfigurator.configure();
, é onde ele pega as configurações básicas.. seria isso? E dessa forma teria algum problema? Abraço e valeu!!
E

o único problema seria para alterar o formato do arquivo gerado por exemplo, teria que alterar no java e recompilar… tendo num arquivo fora, fica mais fácil fazer alteraçoes e abilitar ou desabilitar logs e talz…

J

É mesmo… alterei para o arquivo de propriedades que vc mencinou… agradeço a ajuda!
Fica com Deus!!

E

jovijesc:
É mesmo… alterei para o arquivo de propriedades que vc mencinou… agradeço a ajuda!
Fica com Deus!!

boa! igualmente :wink:

Criado 1 de abril de 2008
Ultima resposta 1 de abr. de 2008
Respostas 5
Participantes 2