Code Sample C# – Inscrire les erreurs dans un fichier

Pour la gestion des exceptions, il est indispensable de ne pas importuner l’utilisateur final tout en gardant une trace des erreurs produites.

Pour cela, la création d’un fichier d’erreur par date est une pratique courante (que personnellement je mets en place systématiquement en plus des messages habituels).

public class LogHelper
    {
        public static void WriteToFile(string errorMessage, string className)
        {
            DateTime nowDate = DateTime.Now;
            string shortDate = String.Format("{0:yyyy-MM-dd}", nowDate);
            string filename = string.Format("{0}.log", shortDate);
            //création du nom de fichier .log
            filename = filename.Replace("/", "-");
            //récupérer le path complet, application PC
            string rootPath = Path.GetFullPath("./Data/Log/");
            //ou le path pour une application serveur
            //System.Web.HttpContext.Current.Server.MapPath("~/Data/Log/");
            string fullFilename = string.Format(@"{0}{1}", rootPath, filename);
            //vérifier les dossiers Data & Log
            if (!Directory.Exists(rootPath))
            {
                //création du dossier
                Directory.CreateDirectory(rootPath);
            }
            //vérifier le fichier
            if (!System.IO.File.Exists(fullFilename))
            {
                //création du fichier log du jour
                System.IO.FileStream f = System.IO.File.Create(fullFilename);
                f.Close();
            }

            using (StreamWriter writer = new StreamWriter(fullFilename, true))
            {
                //écriture dans le fichier log du jour
                writer.WriteLine(string.Format(
                                       "[{0} ON {1}] : {2}",
                                       DateTime.Now,
                                       className,
                                       errorMessage));
            }
        }
    }//end class

Cette méthode static sera appelée très facilement dans notre bloc try/catch par la suite.

class Program
    {
        static void Main(string[] args)
        {
            try
            {
                //provoquer l'erreur pour tester
                throw new Exception("Test : Erreur provoquée");
            }
            catch (Exception e)
            {
                //inscription dans le fichier log
                LogHelper.WriteToFile(e.Message, "Program");
                //affichage dans la console
                Console.WriteLine(e.Message);
                Console.Read();
            }
        }
    }

Télécharger la source (VS2012) ! GestionLogErreur.zip

Laisser un commentaire