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

C# Discussion :

Journal de Log


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut Journal de Log
    Bonjour à tous,

    Pour une application de supervision de processus industriel, je dois inclure un journal de "log", répertoriant les erreurs et les actions de l’utilisateur et/ou du processus.
    Pas de souci pour collecter les informations mais c'est plutôt au niveau de la sauvegarde. Je m'explique :

    A chaque "événement", ouvrir le fichier le fichier en mode "append", écrire la ligne puis refermer le fichier, je me rends compte que cela consomme énormément de temps lorsque je passe un analyseur de performances.

    Quelqu'un a t il une meilleur idée du principe à utiliser ? création d'un cache ? autres ...

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    Çà consomme énormément de temps mais tout est relatif.

    Tu ne dois pas y écrire si souvent que ça, dans le log quand même.

    Tout autre solution signifierait de ne pas écrire directement dans le fichier, mais de garder ça dans une mémoire temporaire ?
    Il faut que cette mémoire soit pérenne. Imagine que ton logiciel, pour une raison ou une autre, plante. A quel moment le cache sera réellement écrit dans le fichier ? Ton logiciel aura-t-il eu le temps de le faire avant de planter ?
    Si non, quand tu relance le logiciel par exemple, est-ce que le cache non encore écrit est toujours disponible pour être écrit dans le fichier ou est-il définitivement perdu ?

    Si ces points là ne sont pas problématiques, tu peux utiliser un cache. Si la priorité est d'avoir le log, il faut écrire au plus vite.

    Une solution serait de garder le fichier ouvert (c'est effectivement généralement l'ouverture et fermeture qui prennent le plus de temps), mais c'est pareil, si ça plante alors que le fichier reste ouvert, faut être sur que tout est bien écrit quand même dans le fichier, faut-être sur aussi que le fichier sera récupérable après plantage. S'il reste ouvert, il peut être endommager lors du plantage.

    Il n'y a pas de solutions parfaites, il n'y a pas de réponses universelles, mais pour moi Ouverture/Écriture/fermeture me semble bien souvent la méthode la plus fiable.
    Et si les volumes à écrire sont trop important, on remplace le fichier par une base de données gérée par un SGBD

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    Mon diagnostic est le même que le tient, pas d'autres solutions en cas de plantage !!

    Mais je m'interroge sur le fonctionnement des journaux de logs sous Windows, qui eux justement fonctionnent en cas de plantage !!

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    si tu as une base de données autant logger dans celle ci
    si tu n'en as pas je trouve ça étrange ...


    après sur la consommation ca dépend de ce que tu fais
    enregistrer un texte complet qui se retrouve souvent le même c'est idiot, un identifiant de message suffit
    de plus le format texte prend de la place pour rien (enfin sauf si on veut que le fichier soit lisible sans passer par ton logiciel)
    sinon une date c'est 8 octets et un identifiant du type de message ca en prendra 4 ou 8, soit 16 octets au pire à ajouter à chaque évènement

    après le log de windows ne fonctionne que quand le programme qui log les infos de plante pas, je ne vois pas ce que voulez dire par là
    et sinon il doit enregistrer une date, un type d'event et un identifiant d'event, les infos détaillées et donc variables doivent être dans un autre fichier (ce qui permet d'afficher la liste rapidement, et le détail quand on clic sur un event)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    après le log de windows ne fonctionne que quand le programme qui log les infos de plante pas, je ne vois pas ce que voulez dire par là
    Il veut certainement parlé du DrWatson. Ce système est une surveillance externe du processus directement pas Windows. lorsque Windows détecte un plantage du processus il génère très probablement un évènement qui peut être capturé, pas par le processus lui-même qui est planté mais par un processus ou logiciel annexe.

    Je ne sais pas comment cela marche exactement, mais j'utilise un outil comme ça dans un des logiciel que je maintiens actuellement. J'utilise MadExcept (pour Delphi), ça rajoute des composants dans le logiciel. A l'utilisation, j'imagine que le code de surveillance vient s’exécuter dans un thread séparé de sorte qu'au moment du plantage (tel qu'on l'à paramétré, nous), une copie de l'écran du logiciel est faite, une copie de certaine données de l'espace mémoire du logiciel est faite, le tout est envoyé par mail sur nos serveurs.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    enfin si on met des try catch partout et qu'on a pas de fuite mémoire un programme .net ne plante pas
    donc dans le catch on peut enregistrer tout ce qui est nécessaire

    et s'il plante hors try catch en général il y a la pile des appels dans le log windows
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. journal des logs avec htaccess
    Par poc32 dans le forum Apache
    Réponses: 3
    Dernier message: 19/08/2007, 11h55
  2. vidage du journal de log, urgent
    Par arona dans le forum Sybase
    Réponses: 7
    Dernier message: 06/07/2007, 08h23
  3. [ASE]Remplissage du journal de log ?
    Par arona dans le forum Sybase
    Réponses: 17
    Dernier message: 04/07/2007, 15h59
  4. Réponses: 1
    Dernier message: 29/11/2005, 14h01
  5. Supprimer journal de log en SQL
    Par David K. dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 24/07/2003, 08h35

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