[pyar] Trabajando con log
Cesar Verdes
cesarverdes en gmail.com
Mar Nov 27 20:02:23 ART 2012
Alberto,
No soy especialista en Python, pero tal vez mi idea te sirva.
Si está usando los métodos descriptos en el apartado 7.2. Reading and
Writing Files<http://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files>del
tutorial de Python, podrías usar los métodos
file.tell() para leer la posición del último caracter procesado en un ciclo
de cron y file.seek(offset) para comenzar desde ahí en adelante en la
próxima ejecución del cron.
Te paso un código de ejemplo... tal vez sea poco pythonesco y con dejo a C,
pero a mi me funcionó.
================= START CODE =================
def write_last_position(pos):
f = open('/tmp/pos', 'w')
f.write(str(pos))
f.close
def read_last_position():
f = open('/tmp/pos', 'r')
pos = long(f.read())
f.close
return pos
def cron():
f = open('/tmp/file.log', 'r')
s = ""
pos = read_last_position()
if pos <> 0:
f.seek(pos)
ch = f.read()
while ch:
s += ch
ch = f.read()
write_last_position(f.tell() -1)
print s,
f.close()
if __name__ == '__main__':
write_last_position(0)
raw_input("Cree un archivo de texto '/tmp/file.log' con algunos
caracteres")
cron()
raw_input("Agrege algunos caracteres al final del archivo
'/tmp/file.log'")
cron()
raw_input("Agrege unos caracteres mas al final del archivo
'/tmp/file.log'")
cron()
=================== END CODE ==================
Espero que te sirva, y me gustaría recibir comentarios, sugerencias para
mejorar "el estilo".
Un abrazo
César
2012/11/27 Agustin Henze <tin en sluc.org.ar>
> On 27/11/12 06:29, Alberto Benítez wrote:
> > Buenas,
> >
> > Estoy utilizando un parser que lee un log y hace determiandas acciones
> > dependiendo lo que encuentre, el problema esta en que el parser lo lanza
> > cron cada 5 minutos y leer siempre todo el fichero.
>
> fail2ban hace exactamente esto, fijate si no cumple directamente con tus
> requerimientos. El proyecto está escrito en python, así que podes sacar
> alguna idea de ahí mirando el código.
>
> > Que recomiendan para esto
> > -marcar la ultima linea leída
> > -tener dos ficheros y lo que lea en uno lo meto en otro
> >
> > ¿Alguna otra alternativa?
>
> Podés usar inotify y colgarte de los eventos que te hagan falta. Me
> parece que es la mejor opción.
>
> --
> TiN
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20121127/c50325d9/attachment.html>
More information about the pyar
mailing list