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 PHP Discussion :

Traitement d'un fichier log


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 17
    Points
    17
    Par défaut Traitement d'un fichier log
    Bonjour,

    J'ai un fichier log organisé dans cette forme (ce sont des événements détaillés entre les accolades) :
    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
    [6007] = 
        {
            type = "shot",
            place = "",
            initiator = "New Vehicle Group #33",
            initiatorID = 16812544,
            t = 65502.983,
            failure = "",
            weapon = "M185_155",
        }, -- end of [6007]
        [6008] = 
        {
            place = "Senaki-Kolkhi",
            type = "takeoff",
            initiatorPilotName = "Crossbow",
            initiator = "US CAS 1.1",
            initiatorID = 16822272,
            t = 65509.22,
            failure = "",
            weapon = "",
        }, -- end of [6008]
        [6009] = 
        {
            place = "Senaki-Kolkhi",
            type = "land",
            initiatorPilotName = "Crossbow",
            initiator = "US CAS 1.1",
            initiatorID = 16822272,
            t = 65526.66,
            failure = "",
            weapon = "",
        }, -- end of [6009]
    L'idée est de ne récupérer que les événements créés par des utilisateurs (indiqué par le critère "initiatorPilotName"), soit ces données :
    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
       [6008] = 
        {
            place = "Senaki-Kolkhi",
            type = "takeoff",
            initiatorPilotName = "Crossbow",
            initiator = "US CAS 1.1",
            initiatorID = 16822272,
            t = 65509.22,
            failure = "",
            weapon = "",
        }, -- end of [6008]
        [6009] = 
        {
            place = "Senaki-Kolkhi",
            type = "land",
            initiatorPilotName = "Crossbow",
            initiator = "US CAS 1.1",
            initiatorID = 16822272,
            t = 65526.66,
            failure = "",
            weapon = "",
        }, -- end of [6009]
    J'ai tenté différentes approches notamment avec file_get_contents() pour récupérer l'ensemble du fichier dans une seule chaine et définir des explodes, mais ça ne fonctionne pas.

    Auriez-vous une idée de l'approche à tenté pour récupérer uniquement les données (place, type, initiatorPilotName, initiator, initiatorID, t, failure, weapon) liés à l'objet initiatorPilotName dans cette structure ? (j'ai pensé à insérer les caractères entre les lignes [****] = et }, -- end of [****] dans un même élément de tableau, mais je vois pas comment coder ça)

    Cordialement,
    Beniti

  2. #2
    Invité
    Invité(e)
    Par défaut


    Est-ce que la structure de ton fichier de log est un peu modifiable ? Parce qu'en un rien de temps, tu peux le transformer en JSON, qu'ensuite tu interprètes super facilement en PHP.

    Dans le cas contraire, tu devras te taper des RegExp...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 17
    Points
    17
    Par défaut
    Salut,

    Merci pour la réponse
    Finalement j'ai trouvé une solution avec file_get_contents un split et des conditions contenant des strstr pour récupérer uniquement les morceaux qui m’intéressent.

    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
     
    	function openlog() {
     
    		$openlog = file_get_contents("debrief.log");
     
    		$logs = split('[{}]', $openlog);
     
    		foreach ($logs as $result) {
    			if (strstr($result, 'initiatorPilotName') && !strstr($result, '"shot"')) {
    				$datas .= $result.'<br /> <hr /> <br />';
    			}
    		}
     
    		return $datas;
     
    	}
    A+

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

Discussions similaires

  1. [Log4j]Cherche visualiseur de fichiers logs de log4j
    Par RolandB dans le forum Logging
    Réponses: 9
    Dernier message: 18/03/2009, 15h11
  2. [Tableaux] Traitement de fichier log
    Par pascalbout1 dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2007, 14h20
  3. Fichier log des requêtes d'une bdd
    Par Sub0 dans le forum Administration
    Réponses: 4
    Dernier message: 22/03/2004, 14h12
  4. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30

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