[Java lista] printStackTrace
Loxy Gento
loxygento at gmail.com
2009. Okt. 23., P, 19:15:24 CEST
2009/10/22 Laja <laja at freemail.hu>:
> Hali!
>
> Log4j loggernél hogyan lehet szépen megoldani, hogy a logba a StackTrace
> is belekerüljön?
>
> Én csak a kézi megoldást találtam:
> logger.error(ioexc.toString());
> //StackTrace kiírása
> StringBuilder st=new StringBuilder();
> StackTraceElement[] ste=ioexc.getStackTrace();
> for(int i=0;i<ste.length;i++){
> st.append(ste[i].toString()+"\n");
> }
> logger.error(st_str.toString());
>
> Ezt mindenhova berakni kissé macerás. Vagy írjak mindenhova saját
> logosztályt?
Az AOP (Aspect Oriented Programming) erre van kitalálva.
Pl AspectJ - vel:
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
/**
* Logger aspect.
*
*/
public aspect Logging
{
/**
* The logger instance.
*/
Logger _logger = Logger.getLogger("logger");
/**
* Pointcut of stack trace printing.
*/
pointcut stackTracePrinting()
: call(void java.lang.Throwable.printStackTrace()) && !within(Logging);
/**
* Redirects stack trace printing into logger.
*/
void around() : stackTracePrinting() {
if (_logger.isEnabledFor(Level.ERROR))
{
_logger.log(Level.ERROR, (Throwable)*thisJoinPoint*
.getTarget());
}
}
}
loxy
--------- következõ rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20091023/f9cb9005/attachment.html
További információk a(z) Javalist levelezőlistáról