Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1599 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Ecriture de log et accès simultané au fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ecriture de log et accès simultané au fichier

n°1823563
yellu
Posté le 08-12-2008 à 13:52:03  profilanswer
 

Bonjour,
 
Je réalise en ce moment une application en Perl qui est composé de plusieurs scripts ".pl".
 
Ces scripts peuvent être appelés via des évenements bien précis tel que l'ouverture d'un mail ou l'accès à une page web.
 
Ces scripts doivent insérer une ligne dans un fichier de log lorsque l'evenement qui les a lancé est arrivé.  
Le problème est que ces evenements peuvent arriver en masse et au même moment !
 
Comme pour l'instant je faisais un "open F '> monfichier.log' or die('oh non');", il y avais des insertions qui echouaient.
 
Est ce que le module IO::Event pourrait résoudre ce problème, j'ai cru comprendre que cela permettait d'attendre l'accessibilité d'un fichier en écriture, mais je n'arrive pas à m'en servir.
 
Avez vous des solutions sinon pour gérer ce genre de problématique ou un exemple d'utilisation de IO::Event ?
 
Merci d'avance.


Message édité par yellu le 08-12-2008 à 13:54:17
mood
Publicité
Posté le 08-12-2008 à 13:52:03  profilanswer
 

n°1823695
gilou
Modérateur
Modzilla
Posté le 08-12-2008 à 18:25:56  profilanswer
 

Pour cela (les logs), il y a un module approprié, et tres puissant, log4perl (inspiré par log4j en java).
http://log4perl.sourceforge.net/
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1823759
yellu
Posté le 08-12-2008 à 21:16:42  profilanswer
 

Effectivement ça devrait régler mon problème, reste à appréhender la bête ^^
 
Merci beaucoup!

n°1823800
gilou
Modérateur
Modzilla
Posté le 08-12-2008 à 22:26:14  profilanswer
 

Dans ton cas, je structurerais ca ainsi:
un package  My::Log (ou ce qui te conviens) dans lequel est fait le code de l'initialisation du logger.
Le nom du fichier de log est filé au logger a ce moment la.
et chacun de tes scripts fait un  
use Log::Log4perl;
use My::Log;
un lancement de l'initialisation du logger si il ne l'est pas déja, par appel de ce qu'il faut dans My::Log, puis
my $log = Log::Log4perl->get_logger("My::Log" );
et des emplois avec
    $logger->trace("..." );  
    $logger->debug("..." );  
    $logger->info("..." );    
    $logger->warn("..." );    
    $logger->error("..." );  
    $logger->fatal("..." );  
selon tes besoins.
J'ai pas testé, mais a priori, je pense que ça devrait coller.
A+,


Message édité par gilou le 08-12-2008 à 22:26:26

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1943802
MisterBark
be aware
Posté le 24-11-2009 à 04:55:19  profilanswer
 

Personnellement, j'utiliserais plutot flock !

 

Tu fais un :
use Fcntl qw(:DEFAULT :flock);

 

Puis ensuite, juste après avoir ouvert le fichier (avec open ou meme sysopen),
si tu ne comptes que le lire : flock(FILEHANDLE, LOCK_SH);
si tu risques de le modifier: flock(FILEHANDLE, LOCK_EX);

 

SH = shared : verrou partagé
EX = exclusive : verrou exclusif

 

En fait, le concept est que le LOCK_SH ne sert strictement à rien s'il n'y a pas de LOCK_EX.
Car il peut y avoir plusieurs fichiers verrouillés en meme temps en SH, mais en revanche, s'il doit y avoir un verrou EX, la il sera seul (lui attendra que tous les autres aient fait close, et tous les autres (EX ou SH) attendront ensuite que lui seul ait fait close pour continuer)
flock fait en fait une sorte de sleep en attendant que la voie soit libre.


Message édité par MisterBark le 24-11-2009 à 04:59:02

---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Ecriture de log et accès simultané au fichier

 

Sujets relatifs
Upload fichier supérieur à 300 MoVB sauvergarde si fichier inexistant
écriture et lecture dans la base de registremacro word qui divise 1 fichier en plusieurs fichiers
fichier modifiable[EDIT après avoir bossé un peu] Retour sur le menu principal
Problème de fichier executableParsing et modification fichier xml
variables à base d'un fichier en inputFichier Batch et commande FTP
Plus de sujets relatifs à : Ecriture de log et accès simultané au fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR