# Nochmals: e.printStackTrace in Logdatei schreiben



## Lautsprecher (13. März 2006)

Hallo,
ich hab mal nochmal eine Frage zum e.printStackTrace(). Das mit der Ausgabe in einer MessageBox wie OptionPane habe ich bereits einbauen können.
Nur hätte ich eingentlich die Fehlermeldung lieber in meiner Log-Datei...
Die ich wie folgt anlege......



```
try {
      BufferedReader in = new BufferedReader(
      new InputStreamReader(
      new FileInputStream("X:\\qwu-pdisys015
                         \\Produktion\\Programm\\Logfile\\Logfile_Gruppenarbeit_V_3.0.4.txt" ) ) );
	      while( null != (s = in.readLine()) ) {
	           vec.add( s );
	      }
	      in.close();
	    } catch( FileNotFoundException ex ) {
	    } catch( Exception ex ) {
	    //System.out.println( ex );
	    }
	    // Falls es keine Datei gab, erzeuge Einträge im Vector:
	    if( 0 >= vec.size() ) {
          	         for( int i=0; i<KEYS.length; i++ ) {
                	        vec.add( KEYS[i] + " = " + System.getProperty( KEYS[i] ) );
	      }
	    }

	if (s_fehler)
	{
	    switch (fehlerart)
	{
	        case 10:
	        {
	        	JOptionPane.showMessageDialog(null,
	                	 "Fehlermeldung!\n" +
		 	 "(#Fehlercode 10#)\n" +
	    		 "Bitte verständigen Sie ihren Administrator!\n" +
		 	 "Zugriff auf Username und Hostname gescheitert \n" +
	    	                 "Das Programm kann nicht ausgeführt werden \n" +
	    		 "und wird wieder geschlossen");
			   					 // Füge weiteren Eintrag hinzu:
	    	    vec.add("");
	    	    vec.add( "Zeitstempel = " + new SimpleDateFormat(
	    	              "yyyy-MM-dd HH:mm:ss,SSS" ).format( new Date() ) );
	    	  
	    	    vec.add("Fehlermeldung! \n"   +
	    	           "Fehlercode #10# \n"  + 
	    	            "Username und Hostname an der Arbeitstation konnten 
                                              nicht ausgelesen werden\n" +
	    	       "in der Methode groupIdAuslesen()");
	    		
	    vec.add("Wie kann ich e.printStackTrace() ausgeben lassen?")					    		 			break;
		        }
                                     etc. etc. etc. etc.
```

Gibt es vielleicht zum Schreiben in ein Vector eine andere Methode wie e.printStackTrace(), die aber die Selbe Ausgabe bewirkt?


----------



## Thomas Darimont (13. März 2006)

Hallo!


```
/**
 * 
 */
package de.tutorials;

import java.io.PrintWriter;
import java.io.StringWriter;

/**
 * @author Tom
 *
 */
public class PrintStackTraceToStringExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        StringWriter stringWriter = new StringWriter();
        PrintWriter printWriter = new PrintWriter(stringWriter);
        
        try {
            throw new Exception("catch me if you can");
        } catch (Exception e) {
            e.printStackTrace(printWriter);
        }
        
        printWriter.close(); //not needed...
        System.out.println(stringWriter.toString());
    }
}
```

Gruss Tom


----------

