[SP-pm] Logar access.log do Squid no Mysql usando File::Tail

MrBiTS mrbits at linuxmasters.info
Wed Aug 20 07:27:19 PDT 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

>   Preciso desenvolver um programa que leia entradas de um arquivo texto (no caso access.log do Squid) e insira os dados no meu banco MySQL. Alguem se interessa em ajudar ou desenvolver para mim?

Há diversas maneiras de você inserir os dados num db MySQL. Se você quer
simplesmente replicar o conteúdo do Log para o DB, você faz direto
através de um LOAD DATA INFILE do MySQL, sem necessidade de um script perl.

Se você quer campos específicos, podemos trabalhar com algo assim:


# Abrindo o arquivo para leitura
open(ARQ, "<access.log")

# Lendo o arquivo sequencialmente
while(<ARQ)) {
    $linha = $_;
    chomp($linha);
    @campos = split(/\ /, $linha)
}

Nesse ponto você tem um vetor @campos, que pode ser acessado via
$campos[0], $campos[1] e assim por diante.



Eu enviaria os campos que quero para um arquivo texto, separado por,
digamos, "^", e o inseriria via LOAD DATA, em algo assim:

#Conectando-se ao DB

use DBI qw(:sql_types);
$dbh=DBI->connect($conncred, $dbuser, $dbpasswd) or die $DBI::errstr;

$query = "LOAD DATA LOCAL INFILE 'arquivo.log' FIELDS TERMINATED BY '^'
LINES TERMINATED BY '\n' INTO TABLE log (campo1,campo2,campoN)";
$sth=$dbh->prepare($query);
$sth->execute() || die $DBI::errstr;
$sth->finish();

Acho que com isso você já tem subsídios para começar.

- --

Um abraço

.0. MrBiTs - mrbits at linuxmasters.info
..0 GnuPG  -
http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
000 http://www.mrbits.com.br


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkisKccACgkQrDdxWm3R8YbE+QCfXHGnV5UzZ/rOwximhj/E4ITS
W3YAn3YhXw0x+ZA9bdgz5Xd8rNKx33/I
=XHks
-----END PGP SIGNATURE-----


More information about the SaoPaulo-pm mailing list