Comment puis-je écrire l’exception de printStackTrace () dans un fichier texte en Java?

Je dois capturer l’exception dans un fichier texte en Java. Par exemple:

try { File f = new File(""); } catch(FileNotFoundException f) { f.printStackTrace(); // instead of printing into console it should write into a text file writePrintStackTrace(f.getMessage()); // this is my own method where I store f.getMessage() into a text file. } 

Utiliser getMessage() fonctionne, mais ne montre que le message d’erreur. Je veux toutes les informations dans printStackTrace() y compris les numéros de ligne.

Il accepte un PrintStream tant que paramètre; voir la documentation .

 File file = new File("test.log"); PrintStream ps = new PrintStream(file); try { // something } catch (Exception ex) { ex.printStackTrace(ps); } ps.close(); 

Voir aussi Différence entre printStackTrace () et toSsortingng ()

Essayez de développer cet exemple simple:

 catch (Exception e) { PrintWriter pw = new PrintWriter(new File("file.txt")); e.printStackTrace(pw); pw.close(); } 

Comme vous pouvez le constater, printStackTrace() a des surcharges.

Définissez le stream err / out en utilisant la classe System .

 PrintStream newErr; PrintStream newOut; // assign FileOutputStream to these two objects. And then it will be written on your files. System.setErr(newErr); System.setOut(newOut); 

Il y a une API dans l’interface getStackTrace() qui est utilisée en interne pour imprimer dans la console par printStackTrace()

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Throwable.html#getStackTrace ()

Essayez cette API pour obtenir StackTraceElement et imprimer ces éléments de manière séquentielle.

L’espoir ci-dessous vous aide-

 package com.kodehelp.javaio; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; /** * Created by https://kodehelp.com * Date: 03/05/2012 */ public class PrintStackTraceToFile { public static void main(Ssortingng[] args) { PrintStream ps= null; try { ps = new PrintStream(new File("/sample.log")); throw new FileNotFoundException("Sample Exception"); } catch (FileNotFoundException e) { e.printStackTrace(ps); } } } 

Pour plus de détails, consultez ce lien ici