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

Langage Perl Discussion :

analyse de logs en perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 18
    Par défaut analyse de logs en perl
    Salut je ne connais presque pas perl (mis à part faire un script du genre hello world ).

    Je voudrais savoir si il est possible de lire via un script perl les logs d'apache afin de savoir si un fichier prédéfini a été consulté ou non (une image par exemple).

    Si oui quelqu'un aurait un modèle de départ, un script du même genre, un lien vers un tuto, un cours ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 46
    Par défaut
    Bonjour

    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/usr/bin/perl -w
    use strict;
    my $log_apache="/var/log/apache/access.log";
    open(FIC,"<$log_apache");
            while (<FIC>) {
                    my $li=$_;
                    if ($li=~/image.png/) {
                            print $li."\n";
                    }
            }
    close(FIC);
    Tu remplaces $log_apache par ton fichier (suivant ton OS) et la sortie te renvoie toutes les lignes contenant image.png.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Par défaut
    Pourquoi passes-tu par une variable intermédaire dans ta boucle ? Pourquoi ne pas faire directement le test sur $_ ?

    Usti

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 46
    Par défaut
    Question d'habitude

    Ici, c'est vrai que tu ne risques rien à travailler directement sur $_

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Par défaut
    J'ai un peu du mal à cerner dans quels cas ça peut être dangereux de travailler directement sur $_ ?

    Je débute en perl, je galère un peu mais pour le moment j'arrive à faire ce que je veux .
    La faq et les tuto du site m'ont bien aidés (et je dis pas ça parce que je connais l'un des rédacteurs ).

    Usti

    PS: désolé de dévier un peu du sujet original

  6. #6
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 901
    Par défaut
    Salut usti

    Disons que $_ est ce que l'on appelle la variable par défaut. Elle peut ne pas être utilisé c'est au regard du programmeur. Disons que pour débuter, je dirais qu'il est déconseiller d'utiliser $_ pour être vraiment maître de son code. Après, c'est à disposition

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 46
    Par défaut
    Citation Envoyé par ustilago
    J'ai un peu du mal à cerner dans quels cas ça peut être dangereux de travailler directement sur $_ ?
    Comme l'a dit GLDavid, $_ est la variable par défaut, c'est à dire que si, par exemple, tu parcours un tableau, $_ contient la valeur actuelle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @tab = ("jean","rené","paul");
    foreach (@tab) {
        print $_."\n";
    }
    foreach parcour le tableau indice par indice, et $_ contient la valeur corespondant à l'indice actuel.

    Et c'est là que se trouve le danger (minime si on en a conscience) ! En fait $_ n'est pas une copie de @tab[indice actuel] mais pointe sur @tab[indice actuel], c'est à dire que si tu modifies $_ tu vas modifier ton tableau !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @tab = ("jean","rené","paul");
    foreach (@tab) {
        $_ .= "\n";
        print $_;
    }
    Cela affichera la même chose que précédement, mais après la boucle ton tableau contiendra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "jean\n","rené\n","paul\n"

  8. #8
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 18
    Par défaut merci
    Euuh désolé j'me suis endormi pendant quelques jours.

    Merci Stratch pour ta réponse et merci les autres pour les précision sur le $_

  9. #9
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 901
    Par défaut
    Salut

    La prochaine fois, n'oublies pas alors de cliquer sur le bouton la prochaine fois.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  10. #10
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 18
    Par défaut résolu
    pardon j'ai cherché le bouton en haut comme sur certains autres forums.
    Navré

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Par défaut
    Merci pour vos explications sur $_, je pensais effectivement que c'était équivalent à une variable intermédiaire, et n'avais pas percuté qu'en fait en la modifiant je modifiais mon tableau (cf exemple donné par Stach) !

    Va falloir que je zieute mes scripts, et à l'avenir je vais prendre garde .

    Usti

  12. #12
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    C'est l'un des petits pièges de $_ mais l'autre plus fréquent est l'ambiguité : lorsqu'on imbrique deux boucles qui changent $_, on peut assez facilement faire des bétises... Donc $_ est à réserver aux boucles les plus extérieures (ou intérieures, mais il faut respecter la convention choisie) pour éviter ces problèmes. Et nommer la variable de boucle permet aussi de documenter son code lorsque ce n'est pas évident.

    --
    Jedaï

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

Discussions similaires

  1. [JLog Analyser] Outil d'analyse de log
    Par shamanfr dans le forum Mon programme
    Réponses: 3
    Dernier message: 24/01/2007, 18h11
  2. Analyse des logs d'erreur d'apache
    Par canabral dans le forum Apache
    Réponses: 4
    Dernier message: 28/06/2006, 13h02
  3. Analyse des log web
    Par cjacquel dans le forum Statistiques
    Réponses: 1
    Dernier message: 10/04/2006, 23h46
  4. [Stratégie] Analyse de logs
    Par smux dans le forum Logging
    Réponses: 2
    Dernier message: 02/02/2006, 12h15
  5. [Log]Outil pour analyser les logs d'une appli J2EE
    Par sbelli dans le forum Logging
    Réponses: 1
    Dernier message: 18/01/2006, 11h20

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