Pregunta

Me gustaría monitorear un archivo de registro en el que está escribiendo una aplicación.Quiero procesar el archivo línea por línea a medida que se escribe, o poco después.No he encontrado forma de detectar que un archivo se ha extendido después de llegar a eof.

El código debe funcionar en Mac y PC, y puede estar en cualquier idioma, aunque estoy más familiarizado con C++ y Perl.

¿Alguien tiene alguna sugerencia sobre la mejor manera de hacerlo?

¿Fue útil?

Solución

En Perl, el Archivo::Cola El módulo hace exactamente lo que necesita.

Otros consejos

Una respuesta bastante genérica:

La mayoría de los idiomas, en EOF, devuelven que no se leyeron datos.Puede volver a intentar leer después de un intervalo y, si el archivo ha crecido desde entonces, esta vez el sistema operativo devolverá datos.

la esencia de tail -f es el siguiente bucle:

open IN, $file;
while(1) {
  my $line = <IN>;
  if($line) {
    #process line...
  } else {
    sleep(1);
    seek(IN,0,1);
  }
}
close IN;

El buscar La llamada es borrar la bandera EOF.

Deberías poder usar leer el io estándar desde tail -f

Habría pensado generar las acciones a través de T y luego seguirlas (o usar el bucle arriba) el archivo creado por tee some use.

Para Java vea este excelente artículo

http://www.informit.com/guides/content.aspx?g=java&seqNum=226

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top