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.
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...
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.