Produzir string equivalente ao printStackTrace - Java - Portugal-a-Programar
Produzir string equivalente ao printStackTrace
Por Rui Carlos, 22 de Setembro de 2007 em Java
Publicado 22 de Setembro de 2007
Há algum método em Java que me permita atribuir a uma string o texto que é gerado através do printStackTrace de uma excepção?
O que pretendo neste momento é imprimir esse texto num ficheiro de log. Se conseguisse passar isso para uma string, ficava com o problema resolvido, mas se souberem de métodos alternativos para o fazer, também pode ser que ajude.
No printStackTrace não podes indicar uma stream?
Porque não mandas uma stream do ficheiro de log?
getMessage() não dá é tanta info como o printStackTrace
Parece que dá (a parte de usar uma stream já tinha visto, mas só agora é que vi como a criar a partir de um ficheiro)... A solução da string era mais versátil, mas esta também vai servir...
Acho que o getMessage não dá informação praticamente nenhuma...
Usas o sistema de logging do Java ou usas uma biblioteca de logging externa, sendo a apache log4j a mais conhecida e usada.
O getMessage indica apenas a mensagem associada à excepção, normalmente o último ponto do código onde a excepção não foi apanhada, não é tão informativo como o registo da stack, que bem, é o registo da stack de memória afinal de contas
badas 0
Há sempre a hipótese de usar o getStackTrace() que te devolve um array de StackTraceElement. Assim tens informação de excepção bastante estruturada ou, em alternativa, podes simplesmente fazer um toString àquilo.
Se não me engano tentei fazer isso (usando directamente o toString), e só me mostrava um endereço de memória e pouco mais.
De qualquer forma já resolvi o problema (embora não da forma que queria, mas já funciona).
Não cries soluções desenrascadas. Chamas o exception.getStackTrace() com uma stream lá dentro.
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)
Instancias uma PrintStream e depois o output é la colocado. Depois é so passares essa stream pro log.