System.out beim compilieren abschalten

tianr

Grünschnabel
Hallo,

ich entwickle grad ein Programm das momentan ziemlich voll ist mit System.out.println() Zeilen, damit ich das debugen kann. Später soll aber davon nichts mehr im Programm sein, weil es die Leistung enorm einschränkt. (Diese Ausgaben sind vor allem in den Programmteilen die am meisten laufen).

Gibt es einen compilerbefehl mit dem ich dem compiler sagen kann, dass er diese Zeilen auslassen soll? Oder gibt es evtl. etwas anderes das eben dies tut? Mit assert ist das ja soweit ich weiss auch irgendwie möglich.

gruss
Tian
 
Hallo,

Warum benutzt du nicht den Debugger der bei eclipse, netbeans, usw dabei ist?

MFG

zEriX
 
soweit ich den kenne ist der dafür nicht nützlich. Ich brauch ne formatierte Ausgabe um zu sehen ob das Programm das macht was ich möchte. Also etwas was mir eine richtige Übersicht gibt über das was alles berechnet wurde.

Ist der debugger nicht eher dazu geeignet herauszufinden wo speziel ein Fehler entsteht indem man Schritt für Schritt durch das Programm geht oder kann der noch mehr?
 
Wenn du sagst, dass du das zum Debuggen brauchst, gehe ich davon aus, dass du sehen möchtest, ob alles funktioniert und wenn nicht wo der Fehler liegt.

Das was du jetzt erklärt hast, hört sich mehr nach Logging an.

MFG

zEriX
 
Hallo,

verwende einfach ein entsprechendes Logging Framework wie log4j oder java logging (oder commons logging als abstraktion um die zuvor genannten)

Gruß Tom
 
Das wäre auch mein Vorschlag gewesen. Da kannst du nachher bestimmen, was noch geloggt wird, ob überhaupt was geloggt wird und wohin es geloggt wird.

MFG

zEriX
 
Hallo,

konkret würdest du in deinem Code dann sowas schrieben:
Java:
/**
 * 
 */
package de.tutorials;

import org.apache.log4j.Logger;

/**
 * @author Thomas.Darimont
 *
 */
public class LoggingExample {

    static Logger logger = Logger.getLogger(LoggingExample.class);
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        if(logger.isDebugEnabled()){
            logger.debug("Debug");
        }
        
        if(logger.isInfoEnabled()){
            logger.info("info");
        }
        
        //...
    }

}

Für jede Klasse, jedes Package kannst du jeweils einstellen, über welchen Mechanismus gelogged wird (auf Konsole, in ein File, zu einem Netzwerkport,... etc.)
und ab welchem Log-Level die jeweiligen Logger aktiv werden.

Siehe auch:
http://www.tutorials.de/forum/java/244247-printstacktrace-log-datei-loggen.html

Gruß Tom
 
Zurück