162 votes

Comment rediriger la sortie de la console d'un programme Java vers plusieurs fichiers ?

Comment rediriger la sortie de la console d'Eclipse vers un fichier ? Je peux :

  1. Run Configuration -> Commons -> Select a file .
  2. Utilice System.setOut(PrintStream) y System.setErr(PrintStream) .

Le problème avec le point 1) est que j'ai besoin d'enregistrer la sortie de la console dans différents fichiers au lieu d'un seul.

Le problème avec le point 2) est qu'il ne stocke que la sortie de la console générée par System.out.println() ou la trace de pile d'une exception levée. Il ne capture pas d'autres types de sorties, par exemple les avertissements log4j, etc.

Comment rediriger la sortie de la console vers différents fichiers de manière programmatique ?

0 votes

1) Il faudrait peut-être utiliser "Variables.." (ex) C:\test ${???:??}.txt

2 votes

Voici une idée. Ecrivez votre propre plugin eclipse (c'est-à-dire un bouton cusotm) qui assignerait une valeur aléatoire mais unique à une variable (appelée ${NAME} ), puis ferait la même chose que l'exécution. Ensuite, il faut utiliser $NAME comme valeur pour le fichier de sortie. peut-être ?

176voto

Shervin Points 8675

Allez dans Exécuter sous et choisissez Run Configurations -> Common et dans les entrées et sorties standard, vous pouvez également choisir un fichier.

107 votes

Je trouve absolument hilarant que 40 personnes aient voté pour un copier-coller de la deuxième ligne de la question.

14 votes

@AnthonyW Je pense que c'est principalement parce que les gens sont conduits ici par la question du titre qui est "Comment pouvons-nous rediriger la sortie d'eclipse vers un fichier". Cette réponse est en fait une réponse à la question du titre.

1 votes

Si vous ne trouvez pas "Run Configurations", en utilisant Eclipse 4.4 (Luna), j'ai ouvert ma configuration de lancement (en double-cliquant sur le serveur dans l'onglet Servers), j'ai cliqué sur "Open lanuch configuration", puis je suis allé dans l'onglet Common. Dans la moitié inférieure de cette boîte de dialogue, il y a une section appelée "Standard Input and Output". Ici, je peux cliquer sur File et lui donner un nom de fichier.

11voto

Michael Bar-Sinai Points 283

Vous pouvez utiliser une "variable" dans le nom du fichier de sortie, par exemple :

/tmp/FetchBlock-${current_date}.txt

date_actuelle :

Renvoie l'heure actuelle du système formatée en aaaammjj_HHmm. Un argument optionnel peut être utilisé pour fournir un formatage alternatif. L'argument doit être un modèle valide pour java.util.SimpleDateFormat.

Vous pouvez également utiliser une propriété_système ou une variable_environnement pour spécifier quelque chose de dynamique (l'une ou l'autre doit être spécifiée en tant qu'argument).

8voto

Ian2thedv Points 166

Vous pouvez définir la sortie de System.out de manière programmatique en faisant :

System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("/location/to/console.out")), true));

Editer :

Étant donné que cette solution est basée sur une PrintStream nous pouvons activer l'autoFlush, mais selon la norme documents :

autoFlush - Un booléen ; s'il est vrai, le tampon de sortie sera vidé. chaque fois qu'un tableau d'octets est écrit, l'une des méthodes println est utilisée. est invoquée, ou lorsqu'un caractère de retour à la ligne ou un octet (') est écrit. \n ) est écrit

Ainsi, si une nouvelle ligne n'est pas écrite, n'oubliez pas de System.out.flush() manuellement.

(Merci Robert Tupelo-Schneck)

1voto

iOS-Developer84 Points 351

Pour résoudre le problème, j'utilise la variable ${string_prompt}. Elle affiche un dialogue de saisie lors de l'exécution de l'application. Je peux régler la date et l'heure manuellement dans cette boîte de dialogue.

  1. Déplacer le curseur à la fin du chemin d'accès au fichier. enter image description here

  2. Cliquez sur variables et sélectionnez texte_interprétation enter image description here

  3. Sélectionnez Appliquer et Exécuter enter image description here enter image description here

0voto

drp Points 172

Nous pouvons le faire en définissant une variable de la classe System de la manière suivante

System.setOut(new PrintStream(new FileOutputStream("Chemin d'accès au fichier de sortie")). Vous devez également fermer ou vider la variable 'out' (System.out.close() ou System.out.flush()) afin de ne pas manquer de données de sortie.

Source : http://xmodulo.com/how-to-save-console-output-to-file-in-eclipse.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X