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 :

[Langage] Analyse log Web


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut [Langage] Analyse log Web
    Bonjour,

    J'ai un fichier de log d'un serveur en json, je dois analyser ce fichier de log pour extraire toutes les requêtes effectuées, avec leurs arguments et les ordonner par sessionid.
    Le fichier de log ressemble à cela :
    pour les lignes des requêtes :
    sessionID - 01/01/2011 12:00:00 - 00:00:00.0156250: ---> /requete
    exple:
    a5c121ccc12c4db88ad3dfgbess3ae59 - 07/11/2010 18:07:50 - 00:00:03.0119260: ---> /frontrt.aspx?Page=fcallefront&Efrontcall=Callback

    pour les lignes avec les arguments:
    a5c121ccc12c4db88ad3dfgbess3ae59 - 07/11/2010 18:07:51 - 00:00:00 : Callback target:'', arg:'//STUDIO/SERVER/JSON:{"COMMAND":"SEARCHCITY","POSTALCODE":"75001"}'

    Je suis complètement perdu surtout que mon principal souci c'est que les arguments peuvent parfois tenir sur plusieurs lignes, il sont donc tronquées.

    J'ai commencé à faire un script en Perl pour cela mais il ne fonctionne pas du tout :
    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
     
    !/usr/bin/perl -w
     
     
    $LOGFILE = "log_18-32-02.log";
    open(LOGFILE) or die("Could not open log file.");
    foreach $line (<LOGFILE>) {
       my $line =(.*) \- ([0-9]*)/([0-9]*)/([0-9]*) ([0-9]*):([0-9]*):([0-9]*) - ([0-9]*):([0-9]*):([0-9]*)        : Callback target:'', arg:(.*);
     
     
     print "$line\n";
     
    }
     
     
    close(LOGFILE);
    Merci de votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut
    Premiere étape: filtrer le fichier de log uniquement avec des lignes commençant par un sessionID
    Problème comment gérer les ligne avec des arguments qui tienne sur plusieurs lignes ???

    exple:

    a5c121ccc12c4db88ad3dfgbess3ae59 - 08/12/2010 19:04:51 - 00:00:00 : Callback target:'', arg:'//STUDIO/SERVER/JSON:{"COMMAND":"SEARCHCITY","POSTALCODE":"75001","CITY":undefined,"EVENT":"ASSIGNERVILLE","ID":"D25FG6G5ER8R5FD6SD5FF4GY588UOP5D25FG6G5ER8R5FD6SD5FF4GY5DFFSDF54"}'

    quelqu'un pourrait m'indiquer comment faire ?

    ps: je ne veux pas de code tout fait mais juste les fonction ou l'algo à mettre en forme .

    Merci

    Edit:

    j'ai remodifié mon script pour extraire les lignes qui m'intérésse :
    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
     
    #!/bin/perl
    $fichier = 'log_18-32-02.log';
     
    open (F, $fichier) || die "Problème pour ouvrir $fichier: $!";
     
    while ($ligne = <F>) {
     
    if ( $ligne =~ q{(.*) \- ([0-9]*)/([0-9]*)/([0-9]*) ([0-9]*):([0-9]*):([0-9]*) - ([0-9]*):([0-9]*):([0-9]*)        : Callback target:'', arg:(.*)} )
     
    { print $ligne;
    }
    if ( $ligne =~ q{(.*) \- ([0-9]*)/([0-9]*)/([0-9]*) ([0-9]*):([0-9]*):([0-9]*) - ([0-9]*):([0-9]*):([0-9]*)        : ---> (.*)} )
     
    { print $ligne;
    }
     
     
     }
     
    close F;
    Il faut maintenant que je travaille sur les ligne en sortie pour travaillez sur les éléments qui m'interesse (requetes, arguments et session id).

    comment puis-je ordonner mon script par session id ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Un algorithme pour traiter des "blocs de données sur plusieurs lignes" est le suivant, en considérant que tu disposes d'une condition de test pour le début d'une ligne uniquement (à simplifier si tu connais également une condition de fin) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    my @bloc;
    foreach my $ligne (<STDIN>) {
      if ($in_bloc = /^$debut_bloc_regexp/) {
        traiter_bloc(join "", @bloc) if @bloc;
        @bloc = ();
      }
      push @bloc, $ligne;
    }
    traiter_bloc(join "", @bloc) if @bloc;
    La fonction traiter_bloc devrait traiter la ligne "entière". Son nom doit bien sur être adapté à ton besoin.
    Maintenant, il faut que tu définisses ta condition de début de ligne (présence d'un session id ? quel motif pour ce session id ?)

Discussions similaires

  1. analyser logs iptables via interface web
    Par linux_sql dans le forum Sécurité
    Réponses: 2
    Dernier message: 13/07/2011, 17h20
  2. Choix langage création site web dynamique
    Par sybon dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 25/03/2007, 17h40
  3. Iptables Script analyse log + ouverture port
    Par mattewsevitch dans le forum Sécurité
    Réponses: 4
    Dernier message: 17/01/2007, 10h21
  4. Analyse des log web
    Par cjacquel dans le forum Statistiques
    Réponses: 1
    Dernier message: 10/04/2006, 23h46
  5. [langages] Parts de marché des langages de dév web?
    Par drolunet dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 13/12/2005, 13h30

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