Fala galera, blz?
Seguinte estou começando a usar o Log4j e eu não estou conseguindo de jeito nenhum fazer com que ele jogue o stacktrace no log! Alguem pode me ajudar? Valeu!
Fala galera, blz?
Seguinte estou começando a usar o Log4j e eu não estou conseguindo de jeito nenhum fazer com que ele jogue o stacktrace no log! Alguem pode me ajudar? Valeu!
eu faço assim:
[code]
try {
//Aqui vai a açao q pode gerar excessao
} catch (Exception e) {
err("Escreva nome da classe, metodo sei la " + e.toString());
}
private static Logger getLogger() {
return UtilLogger.getLogger(NomeDestaClasse.class);
}
/**
* @param stkTrace
*/
protected void dbg(Object stkTrace) {
getLogger().debug(stkTrace);
}
/**
* @param stkTrace
*/
protected static void inf(Object stkTrace) {
getLogger().info(stkTrace);
}
protected static void err(Object stkTrace) {
getLogger().error(stkTrace);
}[/code]
Faltou o código da minha UtilLogger
[code]
public class UtilLogger {
/**
* Object for logging
*/
private static Logger logger = null;
/*
* Cria um novo FileAppender baseado no layout padrão, pré-definido na
* constante TTCC_CONVERSION_PATTERN da classe PatternLayout.
*/
private static Appender fileAppender = null;
protected static Appender getFileAppender() {
if (fileAppender == null) {
try {
//log4j.appender.output.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} - (%p) - [%c{1}] %m%n
//PatternLayout.TTCC_CONVERSION_PATTERN
fileAppender = new FileAppender(new PatternLayout(
"%d{dd-MM-yyyy HH:mm:ss} - (%p) - [%c{1}] %m%n"),
"NomeDaSuaAplicacao.log");
} catch (IOException e) {
//
}
}
return fileAppender;
}
public static Logger getLogger(Class classe) {
//if (logger == null) {
PropertyConfigurator.configure("ConfigLog.properties");
logger = Logger.getLogger(classe);
//logger.addAppender(getFileAppender());
//}
return logger;
}
}[/code]
E do meu ConfigLog.properties
# root logger properties
log4j.rootLogger=DEBUG, output
#Setup output appender
#log4j.appender.output=org.apache.log4j.FileAppender
#log4j.appender.output.file=NomeDaSuaAplicacao.log
log4j.appender.output =org.apache.log4j.ConsoleAppender
log4j.appender.output.layout=org.apache.log4j.PatternLayout
log4j.appender.output.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} - (%p) - [%c{1}] %m%n
Então eu fiz do jeito que você falou.
Estou logando emum arquivo e o resultado foi este:
"11/08/2006 11:11:55,336 ERROR [Principal] java.sql.SQLException: ORA-00942: a tabela ou view não existe "
Ai no console do eclipse aparece assim:
"java.sql.SQLException: ORA-00942: a tabela ou view não existe
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1038)
at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:830)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1133)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1273)
at br.com.gsp.main.Principal.main(Principal.java:30)"
O que eu quero é justamente que apareca todo o stack trace = o eclipse faz mas isso eu não estou conseguindo fazer!
Valeuuu!
Oi sic,
Tudo bom?
Tente utilizar o método trace da classe Logger. Espero que sirva pra você.
[]s
Eduardo
} catch (Exception e) {
err("Escreva nome da classe, metodo sei la " + e.toString());
}
neste trecho tente usar e.getStackTrace().toString()
nao posso testar agora pq to com outro problema aqui, mas tente aí e me fala.
Testei essa última idéia e funcionou… pode fazer aí q vai dar certo.
Putz cara não é possivel!!!
Segue o trecho de código:
} catch(SQLException e){
log.error(e.getStackTrace().toString());
e.printStackTrace();
}
O resultado no arquivo é:
11/08/2006 13:48:59,440 ERROR [Principal] [Ljava.lang.StackTraceElement;@111a775
Não é possível, tipo tem que fazer alguma configuração especial?
Valeu
ESB valeu pela dica :-). Olhando os métodos do link que você passou eu vi o seguinte método:
public boolean isTraceEnabled()
pelo que eu entendi isso verifica se o nível de TRACE está disponível, eu fiz um teste e retornou false. Como setar isso para true?
Vlw
Falae sic,
Tente usar:
logger.setLevel(Level.TRACE);
Mas na documentação diz que os níveis de log aceitos pelo sistema são OFF, FATAL, ERROR, WARN, INFO, DEBUG e ALL. Se não funcionar com a definição desse nível, tente usar o método trace, que recebe a exception como parâmetro.
[]s
Eduardo
Fala esb,
então fiz o setLevel(Level.TRACE)
e quando pego a exception estou fazendo assim:
} catch(SQLException e){
log.trace(e);
}
e no log aparece só isso:
11/08/2006 14:45:06,976 TRACE [Principal] java.sql.SQLException: ORA-00942: a tabela ou view não existe
Agradeço a ajuda do esb e do Tiago, valeu rapaziada.
Então fica assim:
log.error(e.getMessage(), e);
onde “e” é exception que foi capturada.
Abraços galera
Desse jeito q vc fez por ultimo deu certo?
Se sim, parabens! Espero ter ajudado em algo.
Precisando, tô aí.
Ah, e coloca [RESOLVIDO] no final do nome do assunto agora hheeh.
Bye
Fala Tiago,
então assim do jeito que eu falei deu certo sim cara e você ajudou sim com ctz valeu mesmo.
PS: Como que eu faço para que o [RESOLVIDO] apareça lá no índice do forum?
Abraços
Acho q é só vc editar o Assunto do tópico… Nao tenho certeza…
Hahahaha fala Tiago, descobri como faz hahaah tem que editar o primeiro post hehehe ai fica aparecendo no índice do fórum :-D. Valeu rapa abs.
Oi cara !
Achei este teu topico e resolvi aproveitar pra te fazer uma pergunta.
Estou usando o log4j-1.2.8, mas quando vou gravar a mensagem no banco de dados, ele grava só o comecinho dela… num grava o stacktrace. Vc sabe porque isso acontece ? Segue meu .properties
log4j.rootCategory= WARN, R
log4j.appender.R=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.R.driver=oracle.jdbc.OracleDriver
log4j.appender.R.URL=jdbc:oracle:thin:@192.168.0.138:1521:MOTO
log4j.appender.R.user=123
log4j.appender.R.password=456
log4j.appender.R.sql=INSERT INTO PPMOWN.OPMD_LOGS VALUES(’%d{dd/MM/yyyy HH:mm:ss}’,’%c’,’%p’,SubStr(’%m’, 0, 2048))
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p [%c] - <%m>%n
Obrigado!