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
Vous aimez mes articles ? Offrez-moi un café !