Rediriger les Console.writeline vers un fichier - C#/.NET managed - Programmation
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 :
|
J'espère que c'est assez simple pour toi ^_^.
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 ?
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.
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
Marsh Posté le 25-07-2006 à 16:56:04
"Da TrashCan"
(tu croyais quoi )
Accessoirement, ça peut être "the Denver Tech Center"
http://saloon.javaranch.com/6/000081.html
Marsh Posté le 25-07-2006 à 16:57:44
ReplyMarsh 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/
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à ).
Marsh Posté le 25-07-2006 à 17:44:00
ReplyMarsh Posté le 25-07-2006 à 17:51:37
_darkalt3_ a écrit : |
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.
Marsh Posté le 25-07-2006 à 19:12:28
ReplyMarsh 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.
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
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...
Marsh Posté le 27-07-2006 à 09:23:14
Je bosse avec Visual Studio .NET 2003, ceci explique peut-être cela.
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.
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.
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. |
Ok merci, le Flush fonctionne.
Comment est-ce que tu le réouvres ?
Marsh Posté le 27-07-2006 à 11:55:13
ReplyMarsh 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 ?
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.
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
a+