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!
Log4j para Desktop!
5 Respostas
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);
}
}
}
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...
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
BasicConfigurator.configure();
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…
É mesmo… alterei para o arquivo de propriedades que vc mencinou… agradeço a ajuda!
Fica com Deus!!
É mesmo… alterei para o arquivo de propriedades que vc mencinou… agradeço a ajuda!
Fica com Deus!!
boa! igualmente 