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

Programmation et administration système Perl Discussion :

Lecture de fichier log


Sujet :

Programmation et administration système Perl

  1. #1
    Membre actif
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Par défaut Lecture de fichier log
    Bonjour,
    Voici mon problème : à intervalles réguliers ( par cron), le script devra vérifier si des lignes ont été rentrées dans un fichier de log, et si oui les lire....
    Je ne sais pas bien comment commencer ( en fait, récupérer les pointeurs de lecture/écriture, les mémoriser ( sur disque?) , voir si ils ont évolué ...)
    Merci de vos conseils

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Une première piste simple est de conserver la taille du fichier log tout simplement. Ensuite lire le fichier en utilisant sysread.

  3. #3
    Membre actif
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Par défaut
    Merci de ta réponse
    Malheureusement, ne ne peux pas agir sur le fichier log ( fichier alert.log de Oracle !) : je ne peux que le lire ....

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Et où est le souci ? Je n'ai t'ai pas demandé d'écrire à l'intérieur.
    - juste récupérer la taille du fichier
    - lire le fichier avec sysread.


  5. #5
    Membre actif
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Par défaut
    Bon, je me réponds à moi-même !
    Voila : je lis le fichier, je récupère le pointeur de lecture du dernier enregistrement que je sauvegarde dans un fichier texte ( pas terrible )
    Au prochain lancement, je récupère le pointeur et je lis le fichier là où je l'avais laissé. j'en profite pour enregistrer les nouvelles lignes dans un autre fichier ...
    Je n'ai pas encore étudié le cas où le fichier à lire est plus petit que lors de la dernière lecture ( purge !)
    Qu'en penses-tu ? Que dois-je améliorer ?



    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    use strict;
    my $FilePos= "c:\\pos.txt";		  # Contient la vleur de la dernière lecture
    my $WinIni  = "c:\\OraStat.ini";  # Fichier à traiter
    my $FileLog = "c:\\AlertLog.log"; # Fichier résultat
    my $FILEINI = $WinIni ;
    my $curpos = ""; # position courante du pointeur
    my $Pos= ""; # Pointeur 
    my $RPos = ""; # Pointeur de lecture
    my $ligne = ""; # Enregistrement courant
    # ------------------------------------------------------------------
    # Ecriture de la position du pointeur de lecture
    sub Wpos {
    open(POS,">$FilePos") or die "Impossible de créer $FilePos : $!";
    print POS $curpos . "\n";
    print  $curpos ;
    close(POS);
    }
    # ------------------------------------------------------------------
    # Init du fichier des pointeurs
    sub InitPos {
    open(INI,$FILEINI) or die "Impossible ouvrir $FILEINI: $!";
    while ($ligne = <INI>) {
    						print  " ligne " . $ligne;
    						}
    $curpos = tell(INI);
    close(INI);
    &Wpos();
    } # fin de traitement fichier pos inexistant
     
    # Si le fichier $FilePos n'existe pas
    if (! -e $FilePos ) {
    print " fichier inexistant : premier accés \n";
    &InitPos();
    }
    # lecture de la dernière position
    open(POS,"<$FilePos") or die "Impossible d'ouvrir $FilePos : $!";
    while ($Pos = <POS>) {
    print $Pos;
    $RPos=$Pos;
    }
    close(POS);
    open(INI,$FILEINI) or die "Impossible ouvrir $FILEINI: $!";
    open(LOG,">>$FileLog") or die "Impossible ouvrir le fichier de log $FileLog: $!";
    seek(INI,$RPos,0);
    while ($ligne=<INI>) {
    			print  " ligne  " . $ligne;
    			print LOG $ligne;
     
    }
    close(LOG);
    $curpos = tell(INI);
    close(INI);
    &Wpos;
    Merci de ton aide
    PS: je teste sur Windows, mais ce programme doit aussi tourner sous Unix !

  6. #6
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    Juste par curiosité parce que je n'ai pas regardé l'ensemble de ton problème : tu as essayé de regarder du côté des extensions File::Tail* sur CPAN ? Aucune ne marcherait sous Windows et ne simplifierait ton problème ?

  7. #7
    Membre actif
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Par défaut
    J'ai une solution qui fonctionne, mais je ne sais pas si elle est "élégante"
    merci pour la piste CPAN : je vais aller voir !

Discussions similaires

  1. Lecture d'un fichier Log
    Par galene86 dans le forum VBScript
    Réponses: 6
    Dernier message: 26/05/2015, 16h47
  2. Lecture des fichiers LOG de Windows
    Par Nono40 dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 23/02/2013, 11h53
  3. Probleme Lecture fichier log
    Par lordatef dans le forum C++
    Réponses: 5
    Dernier message: 29/07/2011, 18h18
  4. [Log4j][Applet] Problème lecture du fichier de log
    Par julie4207 dans le forum Logging
    Réponses: 3
    Dernier message: 22/11/2010, 11h29
  5. Lecture du fichier log de la base de données
    Par majda_afkir dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 25/09/2009, 17h59

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