CodeS-SourceS
Rechercher un code, un tuto, une réponse

[c#]Centraliser l'écriture des logs avec une exception personnalisée...

Novembre 2017


Introduction


Ceci va vous permettre de centraliser en un point unique de vos application l'écriture des logs (dans un fichier ou l'EventView) et d'ajouter à ce message inclu dans ce log des données utiles au debug.

Tutoriel


Pour ce faire, il faut commencer par dériver de la classe Exception
public class ExceptionPerso : Exception


Il faut mettre un constructeur approprié
public ExceptionPerso(Exception e)
{
    _ExcepOrigine = e;
}


Vous n'aurez pas manqué de constater qu'il manque la donnée membre _ExcepOrigine, donc ajoutons la, et par la même occasion les membres utiles pour notre exception perso:
private int _Data1 = 0;
private string _Data2 = String.Empty;
private Exception _ExcepOrigine = null;


Pour les renseigner, il faudra des accesseurs:
public int Data1 {set{_Data1 = value;}}
public string Data2 {set{_Data2 = value;}}


Inutile de mettre un accesseur pour l'exception d'origine, elle est renseignée via le constructeur.
Une fois la classe a peu prêt au point, il reste à mettre les méthodes.

A priori la méthode WriteInLog sera utile:
public void WriteInLog()
{
    string DetailInfo = "";
    DetailInfo += "La donnéz 1 est = " + _Data1.ToString() + Environment.NewLine;
    DetailInfo += "La donnée 2 " + _Data2 + Environment.NewLine;
    Log.Write(DetailInfo, _ExcepOrigine, Log.LogLevel.Fatal);
}


Bien sur on peut utiliser un stringBuilder.
Et la classe Log reste à faire (peut être un prochain post si quelqu'un est intéressé)

Maintenant, comment faire remonter cette erreur ? Rien de plus simple. Dans vos catch (ou via un throw voulu), ajouter des throw jusqu'au plus au niveau du programme
catch (Exception e)
 {
    ExceptionPerso ePerso;
    if (!(e is ExceptionPDF))
    {
       ePerso = new ExceptionPerso(e);
    }
    else
    {
      ePerso = (ExceptionPerso)e;
    }
                       
    ePerso.Data1 = _IdUser;  
    ePerso.Data2 = "A cet endroit du code, surement un probleme avec le user";
 
    throw ePerso;
 }


A votre dispo
Publié par OursPasNet.
Ce document intitulé «  [c#]Centraliser l'écriture des logs avec une exception personnalisée...  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
[c#]comment récupérer facilement des données d'un fichier xml ?
Extraction de données dans une base de données ODBC avec un Data Source Name (DSN) en C#