Récupérer la date et le nom d'un log

Bonjour,

Depuis 3 semaine je cherche comme récupéré la date dans un log, voici comment il est présenté :

XXX.XX.XX.XXX site.com - [30/Apr/2009:16:40:21 +0200] "GET /dossier/image.png HTTP/1.1   
XX.XXX.XX.XXX site.com - [30/Apr/2009:16:50:34 +0200] "GET /dossier/image.png HTTP/1.1   
XX.X.XXX.XX site.com - [30/Apr/2009:16:70:10 +0200] "GET /dossier/image.png HTTP/1.1


Donc je veux récupéré les dates (30/Apr/2009:16:40:21 et les convertire en timestamp) ainsi que le nom du fichier (image.png).

J'ai essayer avec des explode() mais impossible.

Merci d'avance.

Voici la base du code que j'ai essayé :

<?php  
$fichier = file_get_contents('fichier.log');  
$log = explode("", $fichier);  
print_r($log);
?>

7 réponses

  1. Contributeur
    As-tu essayé un outil comme logparser qui permet d'importer des logs web dans une base de données ?
    Ainsi tu feras des requêtes vers la base de données avec toutes les données par colonne.

    http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07
    0
    1. Oui mais je souhaite avoir un script PHP
      0
      1. ...
        0
        1. ...
          0
      2. Vive les expressions régulières :)

        $reg = '¤\[(?P<d>\d+)\/(?P<M>\w+)\/(?P<Y>\d{4}):(?P<H>\d+):(?P<i>\d+):(?P<s>\d+)¤';
        if(
        preg_match( $reg, $line , $matches )
        )
        {
        var_dump( $matches );
        }

        Possible aussi d'utiliser, question de goût :
        $reg = '¤\[(\d+)\/(\w+)\/(\d{4}):(\d+):(\d+):(\d+)¤';
        0