[Python-es] Lectura de archivos planos tipo logsurfer

Carlos Herrera Polo carlos.herrerapolo en gmail.com
Lun Mar 28 04:30:24 CEST 2011


Excelente, revisare ese codigo.
Saludos


El 28/03/11, Carlos Zuniga <carlos.zun en gmail.com> escribió:
> 2011/3/27 Manuel Enrique González Ramírez <maengora en gmail.com>:
>> El 27 de marzo de 2011 16:01, Alfonso de la Guarda <alfonsodg en gmail.com>
>> escribió:
>>>
>>> Hola,
>>>
>>> contenido es un objeto de tipo file, por ende puedes emplear read(),
>>> readlines() , etc.....
>>>
>>>
>>>
>>> Saludos,
>>>
>>> --------------------------------
>>> Alfonso de la Guarda
>>> Centro Open Source(COS)
>>> http://www.cos-la.net
>>> http://alfonsodg.net
>>>    Telef. 991935157
>>> 1024D/B23B24A4
>>> 5469 ED92 75A3 BBDB FD6B  58A5 54A1 851D B23B 24A4
>>>
>>>
>>>
>>> 2011/3/27 Carlos Herrera Polo <carlos.herrerapolo en gmail.com>:
>>> > ---------- Forwarded message ----------
>>> > From: Carlos Herrera Polo <carlos.herrerapolo en gmail.com>
>>> > Date: Sun, 27 Mar 2011 22:58:54 +0200
>>> > Subject: Re: Lectura de archivos planos tipo logsurfer
>>> > To: Alfonso de la Guarda <alfonsodg en gmail.com>
>>> >
>>> > Buena idea, no se me habia ocurrido usar tail.
>>> > La variable "contenido" en el ejemplo que representa ? Una lista ? Un
>>> > texto enorme con el resultado de tail ?
>>> >
>>> > El 27/03/11, Alfonso de la Guarda <alfonsodg en gmail.com> escribió:
>>> >> Hola,
>>> >>
>>> >> Pues yo emplearía (tal como lo he hecho antes) popen (aunque desde 2.6
>>> >> ya es un método obsoleto)
>>> >>
>>> >> import os
>>> >> contenido = os.popen("tail -n 50 /var/log/syslog")
>>> >> print contenido.read()
>>> >> if contenido.read() .,.....
>>> >>
>>> >> En tail cambia el 50 por la cantidad de líneas que quieras y
>>> >> obviamente metelo en un loop (con pausa) o como una tarea programada
>>> >> (cron)
>>
>> Y si al tail le agregas un grep para buscar algo en concreto te quedará
>> más
>> eficiente
>>
>> contenido = os.popen("tail -n 50 /var/log/syslog | grep -i
>> 'error_a_buscar'
>> ")
>>
>>>
>>> >>
>>> >>
>>> >> Saludos,
>>> >>
>>> >> --------------------------------
>>> >> Alfonso de la Guarda
>>> >> Centro Open Source(COS)
>>> >> http://www.cos-la.net
>>> >> http://alfonsodg.net
>>> >>    Telef. 991935157
>>> >> 1024D/B23B24A4
>>> >> 5469 ED92 75A3 BBDB FD6B  58A5 54A1 851D B23B 24A4
>>> >>
>>> >>
>>> >>
>>> >> 2011/3/27 Carlos Herrera Polo <carlos.herrerapolo en gmail.com>:
>>> >>> Ilustres, quisiera tener su opinion al respecto..
>>> >>>
>>> >>> Administro ciertos servidores linux, y consolido la informacion de
>>> >>> los
>>> >>> logs de estos en un unico servidor con el servicio syslog-ng, los
>>> >>> logs
>>> >>> son archivos planos que se almacenan en formato ASCII, un log por
>>> >>> cada
>>> >>> servicio/servicio.
>>> >>> Quisiera desarrollar un programa simple que me alerte por correo de
>>> >>> ciertos eventos que ocurren en los logs.... Existe un programa
>>> >>> llamado
>>> >>> logsurfer, escrito en C que hace esto...
>>> >>> Mi idea es hacer un logsurfer pero en python, pero no se como
>>> >>> trabajar
>>> >>> la lectura de estos archivos planos que cada uno debe tener varios
>>> >>> megas de peso, y son escritos cada segundo, ustedes como lo harian ?
>>> >>> Porque hacer fileread por cada uno y luego irme hasta las ultimas
>>> >>> filas como que no seria eficiente...
>>> >>>
>
> Si la preocupación es que sea eficiente, no sería mejor usar solamente
> python en lugar de abrir más procesos?
>
> Mira este algoritmo que implementa tail en python, es eficiente por
> que comienza a buscar desde atrás, así que no lee el archivo completo
> si no es necesario:
>
> http://stackoverflow.com/questions/136168/get-last-n-lines-of-a-file-with-python-similar-to-tail/136368#136368
>
> Saludos
> --
> Linux Registered User # 386081
> A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
> de leer manuales.
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>

-- 
Enviado desde mi dispositivo móvil


Más información sobre la lista de distribución Python-es