ViktorMedlem sedan aug. 20021 710 inlägg (svårt att hitta en titel till tråden :))
Hade tänkt att göra en liten debug klass som skriver lite output till en fil undertiden som man kör applikationen. Applikationen är en webapp med servlet, jsp, taglib osv så jag tänkte spara debug klassens objektet i application contexten.
Nu till mitt problem, hur gör jag när jag lägger ut programmet på riktigt? Ska jag ta bort alla anropp till debug skrivaren, ska jag ha en if sats framför varje anropp till den eller kan man kolla det när man är i klassen? Vad är bäst helt enkelt.
/Viktor
JaarMedlem sedan juli 2001434 inlägg Jag brukar köra en constant i klassen .... boolean debug = true;
som jag ändrar till false innan jag lägger upp den... tycker jag fungerar bra.. dock tar det ju lite lite på prestandan mot om du tar bort allt som har med klassen att göra... men å andra sidan så vill du lätt kunna aktivera debug-funktionen om du ska göra ändringar/tillägg...
Sen brukar jag ibland köra med en debug på normala klasser också, så att man vet om just den klassen ska debuggas...
if(this.doDebug() && logger.doDebug())
{
logger.writeLog("Logga detta");
}
ChainsawMedlem sedan sep. 20001 282 inlägg Själv har jag två olika uppstartsklasser beroende på om debugging körs eller inte. Koden i dom startar egentligen bara den riktiga koden, men tillhandahåller även en referens till sig själv och en final static boolean. Kod som sen kollar mot den kan endera väljas att alltid exekveras eller tas bort helt av en smart JVM.
Är det inte underbart med program som optimeras under runtime?
Det allra bästa tycker jag är att kunna slå av och på loggning under körning, särskilt om det är en webbapplikation. Oftast vill man ju logga även när applikation är uppe och snurrar skarpt.
Även om det kan vara kul att skriva egen loggfunktionalitet så är det lite som att uppfinna hjulet på nytt, använd istället Log4J som är det mest använda loggnings-API:et för Java, det är fasligt bra och snor inte prestanda.
ViktorMedlem sedan aug. 20021 710 inlägg Laddar ner Log4J nu och ska se hur det ser ut och om jag kan få igång det :) Tack för alla tips!
/Viktor
ViktorMedlem sedan aug. 20021 710 inlägg Fråga, igen :)
Jag har tidigare kör med
catch(SQLException sql)
{
getServletContext().log("A database error occurred while loading vgbbconfig",sql);
}
och
catch(SQLException sql)
{
sql.printStackTrace(System.err);
}
ska man ha kvar dessa fel utskrifter också även om man kör med Log4J eller är det lika bra att ta bort dem.
Har fått Log4J att fungera så som jag vill ha det nu och det blev ju riktigt bra! Tack för tipset.
/Viktor
LimeMedlem sedan sep. 2001837 inlägg Om man gör egna logklasser så brukar det vara brukligt att använda en systemparameter så att man t.ex. säger -Ddebug=level1 för level1 debuggning.
Sedan kollar man bara i koden om flaggan är medskickad.
Men Log4J är riktigt trevlig att använda om man inte vill använda det som numera finns med i Java1.4...
/Lime