Rediriger les Console.writeline vers un fichier

Rediriger les Console.writeline vers un fichier - C#/.NET managed - Programmation

Marsh Posté le 25-07-2006 à 15:59:30    

Salut,  
je commence le C Sharp / Dot net, et j'ai une application déjà construite qui bugge.
Je souhaiterais dans un premier temps rediriger toutes les traces vers un fichier de log. C 'est possible simplement ?
Merci  :hello:  
a+

Reply

Marsh Posté le 25-07-2006 à 15:59:30   

Reply

Marsh Posté le 25-07-2006 à 16:30:47    

Oui, tu déclares un StreamWriter provenant du namespace System.IO.
un peu dans le genre :
 

Code :
  1. //Code
  2. StreamWriter sw = new StreamWriter(ton_fichier_de_log);
  3. //Exemple, recuperer informations de debug dans une chaine str
  4. sw.WriteLine(ta_chaine_de_debug)
  5. //Et pas oublier de fermer le fichier de logs à la fin ;)
  6. sw.Close();


 
J'espère que c'est assez simple pour toi ^_^.


Message édité par Benwoua le 25-07-2006 à 16:32:27
Reply

Marsh Posté le 25-07-2006 à 16:45:54    

Merci, mais je pensais davantage à une méthode qui surcharge Console.writeLine de manière à ce que ca m'évite d'insérer ce bout de code partout dans mon appli.
 
S'possib ca ?  :)

Reply

Marsh Posté le 25-07-2006 à 16:51:21    

C'est pas une bonne idée de surcharger console::writeline.
 
Créer plutot un objet logger, qui lui pourra à son aise redigier les logs vers une fenetre, un fichier, etc.


---------------
Töp of the plöp
Reply

Marsh Posté le 25-07-2006 à 16:53:12    

sinon, à l'invite de commande (si l'appli n'est pas interactive) :
 
monprogrammequiplante.exe > dtc.txt

Reply

Marsh Posté le 25-07-2006 à 16:54:56    

très joli nom de fichier :jap:


---------------
Töp of the plöp
Reply

Marsh Posté le 25-07-2006 à 16:56:04    

"Da TrashCan"
(tu croyais quoi :ange:)
 
Accessoirement, ça peut être "the Denver Tech Center" :D
http://saloon.javaranch.com/6/000081.html


Message édité par Arjuna le 25-07-2006 à 16:58:07
Reply

Marsh Posté le 25-07-2006 à 16:57:44    

"Depuis Ta Console" en fait :ange:


---------------
Töp of the plöp
Reply

Marsh Posté le 25-07-2006 à 16:58:36    

_darkalt3_ a écrit :

"Depuis Ta Console" en fait :ange:


:jap:

Reply

Marsh Posté le 25-07-2006 à 17:02:31    

tiens tu peux lire ça pour avoir quelques idées
http://vincentlaine.developpez.com/tuto/dotnet/log/

Reply

Marsh Posté le 25-07-2006 à 17:02:31   

Reply

Marsh Posté le 25-07-2006 à 17:43:16    

Merci à tous pour votre aide. Je vais faire un logger, le seul point qui est encore obscur est quelle est la fonction appelée lorsque je quitte mon programme ? ( j'aimerais close le logger à ce moment là ).

Reply

Marsh Posté le 25-07-2006 à 17:44:00    

:??:
 
fermer les fichiers ?


---------------
Töp of the plöp
Reply

Marsh Posté le 25-07-2006 à 17:51:37    

_darkalt3_ a écrit :

:??:
 
fermer les fichiers ?


 
Oui je voudrais fermer mon fichier de log quand je quitte l'application, car le StreamWriter n'écrit réellement que lorsque je le close.


Message édité par Chandy le 25-07-2006 à 17:51:57
Reply

Marsh Posté le 25-07-2006 à 19:12:28    

Que dit la doc ?


---------------
Töp of the plöp
Reply

Marsh Posté le 26-07-2006 à 17:45:08    

_darkalt3_ a écrit :

Que dit la doc ?


 
Je ne sais pas, mais d'après mes tests ce n'est que lorsque je fais StreamWriter.close() que l'écriture se fait réellement dans le fichier , et ce quelque soit la taille du buffer.

Reply

Marsh Posté le 26-07-2006 à 20:26:34    

où est le problème ?

Reply

Marsh Posté le 27-07-2006 à 09:07:04    

_darkalt3_ a écrit :

où est le problème ?


 
Le problème est que lorsque j'écris mes logs, je ne peux pas fermer puis rouvrir mon StreamWriter à chaque nouvelle ligne de log, donc je voudrais fermer mon StreamWriter seulement quand je quitte le programme.  
Le problème est que quand je ferme ma fenetre principale ( petite croix rouge ), il ne passe pas dans ma méthode "MainForm_Closing" dans laquelle je lui fais "close" du StreamWriter ( ce qui fait finalement l'écriture dans le fichier ). Donc au final le fichier reste vide...
J'espère que c clair  :D

Reply

Marsh Posté le 27-07-2006 à 09:09:51    

c'est étrange que ton code ne passe pas dedans;
 
y'a deux méthodes pour s'échapper d'une form, y'a closing et closed, ou approchant: la première s'effectue avant la fermeture, la seconde après. Tu peux tenter la seconde...

Reply

Marsh Posté le 27-07-2006 à 09:23:14    

Je bosse avec Visual Studio .NET 2003, ceci explique peut-être cela.

Reply

Marsh Posté le 27-07-2006 à 09:25:59    

Non non, aucun souci, j'ai déjà utilisé cette méthode avec cet environnement, pas de probleme.


---------------
Töp of the plöp
Reply

Marsh Posté le 27-07-2006 à 10:33:08    

Perso, je ferme et réouvre le fichier à chaque entrée de mon loggeur.
Et ca ne bouffe pas grand chose comme ressources.
 
Sinon t'as StreamWriter.AutoFlush qui va écrire ton fichier au fur et à mesure.
Et StreamWriter.Flush qui l'écrit à la demande.

Reply

Marsh Posté le 27-07-2006 à 11:47:08    

_Mose_ a écrit :

Perso, je ferme et réouvre le fichier à chaque entrée de mon loggeur.
Et ca ne bouffe pas grand chose comme ressources.
 
Sinon t'as StreamWriter.AutoFlush qui va écrire ton fichier au fur et à mesure.
Et StreamWriter.Flush qui l'écrit à la demande.


 
Ok merci, le Flush fonctionne.
Comment est-ce que tu le réouvres ?

Reply

Marsh Posté le 27-07-2006 à 11:55:13    

Le flush n'entraine pas la fermeture du fichier.


---------------
Töp of the plöp
Reply

Marsh Posté le 27-07-2006 à 13:10:26    

Oui oui j'ai bien compris, mais je cherche une solution alternative comme celle de fermeture/reouverture de fichier à chaque fois.
Après fais un StreamWriter.close(), comment réouvres-tu le fichier ?

Reply

Marsh Posté le 27-07-2006 à 13:41:50    

ben comme tu l'as ouvert la première fois.
 
Et donc le flush t'évites d'avoir à ouvrir et refermer dès que tu veux que tes ajouts soient mis dans le fichier.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed