IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] Créer son journal d'évènement perso


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut [C#] Créer son journal d'évènement perso
    J'aimerais savoir comment ecrire dans le journal d'évènement les erreurs que je recupère dans mes formulaires grace aux try catch ou si c'est possible de les ecrire dans un fichier texte que je créerai moi même.
    J'ai trouvé ce code à écrire dans le fichier global.asax mais je ne sais pas si ca marche pour les erreurs que je gère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    protected void Application_Error(Object sender, EventArgs e)
    		{
    			 String Message = "\n\nURL:\n http://localhost/" + Request.Path
    				 + "\n\nMESSAGE:\n " + Server.GetLastError().Message
    				 + "\n\nSTACK TRACE:\n" + Server.GetLastError().StackTrace;
     
    			 // Create Event Log if it does not exist
     
    			 String LogName = "Application Reservation";
    			 if (!EventLog.SourceExists(LogName)) 
    			 {
    				 EventLog.CreateEventSource(LogName, LogName);
    			 }
     
    			 // Insert into Event Log
    			 EventLog Log = new EventLog();
    			 Log.Source = LogName;
    			 Log.WriteEntry(Message, EventLogEntryType.Error);
    		}

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Personne ne sait?

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    J'ai essayé d'utiliser le WriteEntry dans mon catch pour faire un test d'ecriture lors de l'exception mais j'ai une erreur de sécurité??
    Ahha les mystères de l'informatique...comme disait un de mes profs d'iut

  4. #4
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    La méthode la plus pratique consiste à créer une Page BasePage dont toutes les pages du site héritent et qui ecrit les erreurs dans le journal des évènement du site avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Error
     
        Dim err As String = Request.Url.ToString & ": " & Server.GetLastError.ToString 'Recupère l'erreur
        Server.ClearError() 'Vide l'erreur
        If (Not EventLog.SourceExists("FFE")) Then EventLog.CreateEventSource("FFE", "FFE") 'Créer le journal s'il n'existe pas
        Dim Log As New EventLog("FFE") 'Ecriture dans le journal
        Log.Source = "FFE"
        Log.WriteEntry(err, EventLogEntryType.Error)
        Log.Dispose()
        Response.Clear()
        err = "La page " & Request.Url.ToString & " a généré une erreur.<br />" & _
              "Les causes de l'erreur ont été transmises à l'administrateur."
        Response.Write(err) 'Message pour l'utilisateur
      End Sub
    Comme ca toutes les erreurs sur le site sont ecrites dans le Journal des evenements du site.
    Par contre lors de la création du Journal par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EventLog.CreateEventSource("Nom","Nom")
    l'utilisateur ASP.NET n'a pas les autorisations necessaires.
    Donc soit il faut modifier le compte ASPX soit il faut crééer le journal par un bout de code WinForm.

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Merci bien mais comment faire hériter toutes les pages?
    Je dois écrire cette fonction sur une page de code et l'appeler dans le page load par exemple?

  6. #6
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    Noannnn !!!!
    Tu crées ta Page BasePage avec le handler d'erreur que je t'ai donné.
    Ce handler va intercepter tous les evenements non gérés pour cette page.
    Puis pour les autres pages tu remplaces le:
    (désolé je lis le C# mais je le parle pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Class MaPage
      Inherits System.Web.UI.Page
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Class MaPage
      Inherits BasePage
    Comme ca l'évènement de la classe de base se répercute dans toutes les pages héritées.
    Par contre n'oublies pas de créer le journal avant.
    En fait les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!EventLog.SourceExists(LogName)) 
              { 
                 EventLog.CreateEventSource(LogName, LogName); 
              }
    sont inutiles sauf si tu utilises un compte administrateur pour ton process .NET.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Sans vouloir faire le boulet, c'est exactement la même chose que ce que j'ai fait (1er post cf ci-dessus), puisque le fichier global.asax est utilisé par toutes les pages. Mais le probleme c'est que j'essaie de tester en essyant de déclencher des erreurs non gérées par mes try catch mais je ne retrouve rien dans ces **** de journaux d'évènement??!!

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Bon apres quelques tests ma méthode marche mais apparemment j'arrive pas a creer mon journal d'évènement (a cause des droits?) sinon si je mets le nom "Application" du journal déja existant j'arrive à récupérer les erreurs.

  9. #9
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    Par expérience il ne faut pas utiliser le global asax qui a beaucoup de limitations non documentées.
    il y a des tas de choses que l'on ne peut pas faire avec le global .asax comme en particulier écrire dans un fichier et sans doute écrire dans le journal des évènements.
    C'est documenté nulle part mais au moins on touche au global.asax au mieux le server se porte.
    Le mécanisme d'héritage des pages est beaucoup plus puissant et beaucoup plus fiable.

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    ok je va essayer comme ca alors merki

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    En fait j'ai encore un probleme je n'arrive pas a créer mon journal d'évènement personnalisé. Quelqu'un saurait il le faire? ou bien suis je obligé de passer par la création de PageBase proposé par bifidus actif?

  12. #12
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     EventLog.CreateEventSource(LogName, LogName);
    Suffit à creer le journal, mais le process ASPNET n'a pas les autorisations pour ca il peut ecrire mais pas créer des journaux.
    Il faut créer un projet WinForm standard avec un gros bouton creer le journal qui appelle la ligne de code et cliquer une fois dessus (sisi ca fonctionne).
    Sinon il faut modifier le compte ASP.NET dans le machine.config mais je te le conseille pas ca peut causer des désagréments assez importants au niveau des autorisations si t'as pas l'habitude.

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Merci l'ami je vais essayer alors. Ce qui est chiant quand meme c'est qu'avec cette méthode tu peux récupérer que les exceptions non gérées.
    Enfin c'est déjà bien.

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Heu au fait désolé mais qu'est ce t'appelles un projet WinForm?
    Parce que j'ai toujours ce probleme de securité alors sans modifier le machine.config ca marche pas. Pourtant si je le fais dans le global.asax ca devrait marcher?

  15. #15
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    Je te met l'exe à charger...
    http://ffe.ods.org/bal/CreateLog.zip
    Je peux pas faire plus...

  16. #16
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Merci c'est cool , j'avais essayé de trifouiller avec les windows form mais je ne savais pas comment le faire marcher. Merci bien je n'abuserais plus de ta patience.

  17. #17
    Membre régulier Avatar de Landolsi
    Inscrit en
    Juillet 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 135
    Points : 78
    Points
    78
    Par défaut
    est ce que tu connais comment gerer les journal d'evenement cad leur capacité etc.
    Landolsi




  18. #18
    Membre actif Avatar de quanou
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 311
    Points : 247
    Points
    247
    Par défaut
    Citation Envoyé par bifidus
    Je te met l'exe à charger...
    http://ffe.ods.org/bal/CreateLog.zip
    Je peux pas faire plus...
    Bonjour,
    Je serais intéressé par ton appli winform. Mais le lien ne marche pas. Pourrais-tu le réactiver stp ?
    Merci bcp.
    Nous tenir au courant lorsqu'on fait l'effort de vous répondre...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer son interpréteur de "script perso"
    Par fredu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 28/02/2009, 06h43
  2. Créer son Propre évènement ou "lancer" un évènement
    Par Invité dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 06/09/2006, 21h08
  3. Créer son propre LayoutManager
    Par tomburn dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 17/03/2005, 16h15
  4. créer son propre protocole
    Par matthew_a_peri dans le forum Développement
    Réponses: 11
    Dernier message: 04/03/2005, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo