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

Windows Forms Discussion :

[.net WinForm] Comment ecrire des logs pas deux executable en même temps dans le même fichier log ?


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 82
    Points : 56
    Points
    56
    Par défaut [.net WinForm] Comment ecrire des logs pas deux executable en même temps dans le même fichier log ?
    Bonjour,

    Je suis confronter à un problème pour écrire des logs dans une application winForm.
    Habitué au web, je n'avais pas ce problème.

    Si un utilisateur lance deux fois l’exécutable, le fichier log sera occupé par le premier programme lancé, du coup le deuxième ne pourra pas écrire dessus !!

    Avez vous étés confronté à ce problème ?
    Et comment vous avez pu le contourner ?

    Merci par avance

    Aigle

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Pour être vraiment sûr, tu peux générer un log avec un nom différent à chaque lancement. Comme ça, même si ton appli est lancée 2 fois, ils ne vont pas s’emmêler les pinceaux.

    Ou alors utiliser une DB pour log.

    Avec des solutions comme Log4Net il y a moyen d'avoir des "MinimalLock", mais il y a un lock malgré tout, donc risque de problème (même si celui-ci est minimisé).
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 82
    Points : 56
    Points
    56
    Par défaut
    Merci GuruuMeditation,

    Pas possible de l'ajouter dans le base (Décision maintenance !! )
    Et il faut vraiment que ça soit dans le même fichier

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    Pour que ce soit dans el même fichier il n'y a pas 36000 solutions.
    Il faut
    • que le logiciel bloque le minimum de temps le fichier log. Ça veut dire que le logiciel ne doit ouvrir le fichier de log et donc le bloquer qu'au moment d'y écrire une ligne, et qu'il doit le libérer immédiatement après l'écriture.
    • que le logiciel soit capable de gérer un fichier bloqué par une autre instance, donc capable d'attendre que el fichier soit débloquer en mémorisant pendant ce temps les lignes à écrire qui arriveraient pendant l'attente.

    Bien entendu cela ne fonctionnera pas si le logiciel est arrêté (ou plante) avant d'avoir pu vider le tampon d'écriture. Cela signifie que lors de l’arrêt, il faudra peut-être gérer un tampon pas encore vidé, et accepter qu'en cas de plantage il est possible de perdre certaines données de log pas encore écrites
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    Il y a encore ne laisses pas l'utilisateur lancer 2x l'application
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 82
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    Il y a encore ne laisses pas l'utilisateur lancer 2x l'application
    Le problème, c'est que cette application est déposé sur le serveur, accessible par tout les utilisateurs par un raccourci !!.
    l'argument c'est que pour déployer une nouvelle version, on a pas besoin de le faire sur 100 postes !
    c'est comme ça depuis la version du vb6, je fais le portage, et je dois respecter cette contrainte

    Si vous avez des suggestions pour ça aussi je suis preneur

    Merci

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Créer une base ACCESS sur le serveur.

    Sinon avant d'ouvrir le fichier, vérifier l'existence du fichier log.lock.
    Si il existe, on attend qu'il n'existe plus, puis on le crée (pour prendre le jeton) et on ouvre le fichier de log., on le met à jour, on ferme le fichier et on efface le fichier log.lock.

    C'est rudimentaire, mais si les appli n' écrivent pas comme des malades ça marche.
    Il faut aussi prévoir une fonction pour "débloquer" dans le cas où l'appli. qui a verrouillé le fichier plante. Ça peut-être par exemple : si le fichier log.lock existe (au moment ou on veut l'utiliser) et n'est pas effacer dans les 20 secondes, alors on force l'effacement.

Discussions similaires

  1. [ADO.Net][C#] Comment récupérer des infos d'une table SQL ?
    Par lamojuli dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/01/2006, 16h00
  2. [VB.Net][DataGrid] Comment retirer des items d'un ComboBox ?
    Par graphicsxp dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/12/2005, 11h46
  3. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01
  4. comment faire des espaces entre deux liens ???
    Par baaps dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 24/03/2005, 09h53
  5. Réponses: 7
    Dernier message: 30/12/2004, 12h01

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