Ouverture/fermeture fichier LOG [Résolu]

Signaler
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
-
Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
-
Bonjour,

Dans mon appli, je fais une classe pour écrire mes messages d'erreur dans un fichier texte. L'idée est que je version ces fichiers de log afin de changer de version lorsqu'il dépassera une certaines taille.
Voila donc une partie de ma classe ou je fais la mise à jour de mon fichier.

**************************************
      public static void WriteErreur()
        {
            using (StreamWriter stream = new StreamWriter(retNomFicLog(), true))
                {
                    stream.WriteLine(DateTime.Now + " " + Proc + ":" + MsgUser);
                    stream.WriteLine(DateTime.Now + " " + Proc + ":" + MsgInfo);
                }
        }
**************************************

J'ouvre et je ferme donc à chaque écrirture dans mon fichier LOG est-ce pénalisant pour les temps de réponse, la gestion de la mémoire ? Ne vaudrait il pas mieux ouvrir le fichier au début et le fermer à la fin ?

Merci de m'éclairer
DT

4 réponses

Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
plutot que d'ouvrir fermer en permanence ton fichier, utilise console.writeline, et redirige la sortie standard sur un fichier


TextWriter Temp = Console.Out;

FileStream Logfile = new FileStream("Log.txt", FileMode.Append, FileAccess.Write);

StreamWriter LogStream = new StreamWriter(Logfile);

Console.SetOut(LogStream);
Console.WriteLine(DateTime.Now.ToString("hh:mm:ss") + " - " + p_Msg);
LogStream.Close();
Console.SetOut(Temp);
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Oui, la manipulation de fichier est une action très lente et qui peut provoquer pleins d'exceptions.
Le mieux c'est de mettre toutes les données à écrire dans un buffer, et ensuite ouvrir le fichier, écrire le tout, puis refermer...

<hr size="2" />VC# forever
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

Mon fichier étant un fichier de log, je ne peux me permettre de ne pas écrire tout de suite mes messages d'anomalies puisqu'en cas de plantage je n'aurai pas les derniers messages. Mais aux vues de ta réponse  je vais ouvrir le fichier dès le debut de mon process et le fermer à la fin

Merci
Slts

DT
Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1
Personnellement je pense que rediriger la sortie vers un fichier reviendra strictement au même : il ouvrira et fermera le fichier en permanence.