Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[C#]CENTRALISER L’ÉCRITURE DES LOG AVEC UNE EXCEPTION PERSONNALISÉE...


Information sur le tutorial

Catégorie :Astuces Tutorial .NET ( DotNet ) Date de création : 17/11/2005 21:55:20 Vu : 16 218 fois

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

Ceci va vous permettre de centraliser en un point unique de vos application l'ecriture des logs (dans un fichier ou l'eventview). Et d'ajouter à ce au message inclue dans se log des données utile au débug.

Tutorial

Pour ce faire il faut commencer par dériver de la classe Execption

            public class ExceptionPerso : Exception

 

Il 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 utile 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’exeption d’origine, elle est renseignée via le constructeur.

 

 

Une fois la classe a peut prêt au point, reste a mettre les methodes

A priori la methode writelog 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 a faire (peut être un prochain post si quelqu’un est intéresse)

 

 

Maintenant, comment faire remonter cette erreur ?

Rien de plus simple

Dans vos cacth (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 cette endroit du code, surment un prb avec le user";

 

    throw ePerso;

 }

A votre dispo

 

signaler à un administrateur
Commentaire de coq le 17/11/2005 22:25:53 administrateur CS

Un tant soit peu de mise en page serait bienvenu je pense...

signaler à un administrateur
Commentaire de MorpionMx le 18/11/2005 11:10:34 administrateur CS

...Et de correction dans l'ortho des noms des classes et des mots clés ;)

signaler à un administrateur
Commentaire de Crazyht le 18/11/2005 13:36:20 administrateur CS

Bon alors le maintient de l'exception d'origine que tu l'appelles peut se faire en natif sur toutes les exceptions par la propriétés InnerException.

En deuxième remarque je dirait que if (!(e is ExceptionPDF)) devrait plutôt être if (!(e is ExceptionPerso)).

De plus conceptuellement, une exception n’a pas à tracer quoi que ce soit, on fait des gestionnaires séparés pour ce genre d’action…

Bonne continuation.
CrazyHT

signaler à un administrateur
Commentaire de OursPasNet le 18/11/2005 14:21:29

Ok ok oui c'est vrai
Conceptuellement c'est pas parfait.
J'ai juste voulu montrer comment je m'en suis sorti pour faire ce type de gestion en un minimum de temps et avec un minimum de contraites.
J'essayerai de faire mieux si un jour je repost un tutorial.

Sorry

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,094 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.