Ouverture/fermeture fichier LOG [Résolu]

babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 3 oct. 2006 à 17:10 - Dernière réponse : MoDDiB 546 Messages postés mardi 26 novembre 2002Date d'inscription 4 mai 2007 Dernière intervention
- 4 oct. 2006 à 09:17
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
Afficher la suite 

4 réponses

Répondre au sujet
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 3 oct. 2006 à 17:55
+3
Utile
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);
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de leprov
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 3 oct. 2006 à 17:35
0
Utile
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
Commenter la réponse de cs_Bidou
babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 3 oct. 2006 à 17:42
0
Utile
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
Commenter la réponse de babe59
MoDDiB 546 Messages postés mardi 26 novembre 2002Date d'inscription 4 mai 2007 Dernière intervention - 4 oct. 2006 à 09:17
0
Utile
Personnellement je pense que rediriger la sortie vers un fichier reviendra strictement au même : il ouvrira et fermera le fichier en permanence.
Commenter la réponse de MoDDiB

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.