Cuando uno está acostumbrado a revisar logs con tail en linux, trabajar con logs en Windows se hace una pesadilla. Se echa mucho de menos el grep y el tail en Windows.
Tail para Windows
Existen multitud de programas gráficos para hacer tail a los logs (que iré añadiendo más abajo en este post), pero personalmente me gusta trabajar desde línea de comandos.
Existe un pack denominado Windows Server 2003 Resource Kit Tools, que es perfectamente válido para Windows Server 2008 por ejemplo y que incluye multitud de herramientas que nos serán útiles a los administradores linux/unix en el manejo de logs dentro de Windows
Windows Server 2003 Resource Kit Tools se instala en la ruta C:Program Files (x86)Windows Resource KitsTools> e incluye las siguientes herramientas que necesitaba:
- qgrep.exe (Grep para windows)
- tail.exe (Tail para windows)
Hay un montón de binarios extra, pero no voy a ponerme a probarlos en un servidor de producción.
Si queremos usar tail.exe, deberemos añadir esta ruta al path de nuestro usuario. El funcionamiento es sencillo y admite los siguientes parámetros:
C:Program Files (x86)Windows Resource KitsTools> tail.exe /? usage: TAIL [switches] [filename]* switches: [-?] display this message [-n] display last n lines of each file (default 10) [-f filename] keep checking filename for new lines
Por ejemplo, si queremos ver las últimas 100 líneas de un log, haremos
C:Program Files (x86)Windows Resource KitsTools> tail.exe -100 archivo.log
En el tail para Windows también disponemos de la opción -f para seguir el log conforme se vaya escribiendo. Lo que sospecho es que esta opción no es comparable al -F en linux, que detecta un cambio de inodo en casos de rotado de log, por ejemplo.
Con respecto al grep para Windows, podemos usar los siguientes modificadores:
C:Program Files (x86)Windows Resource KitsTools>qgrep.exe /? usage: qgrep.exe [-?BELOXlnzvxy][-e string][-f file][-i file][strings][files] -? - print this message -B - match pattern if at beginning of line -E - match pattern if at end of line -L - treat search strings literally (fgrep) -O - print seek offset before each matching line -X - treat search strings as regular expressions (grep) -l - print only file name if file contains match -n - print line number before each matching line -z - print matching lines in MSC error message format -v - print only lines not containing a match -x - print lines that match exactly (-BE) -y - treat upper and lower case as equivalent -e - treat next argument literally as a search string -f - read search strings from file named by next argument (- = stdin) -i - read file list from file named by next argument (- = stdin) White space separates search strings unless the argument is prefixed with -e, e.g., 'qgrep "all out" x.y' means find either "all" or "out" in x.y, while 'qgrep -e "all out" x.y' means find "all out".
Tail para Windows en entorno gráfico
Wintail
Se trata de un tail gráfico para Windows con un interfaz muy espartano. No lo recomiendo, lo he visto fallar en multitud de ocasiones con archivos grandes. Por ejemplo, estar mostrándome entradas de log de hace una semana y volverme loco para terminar descubriendo que simplemente estaba haciendo tail donde no era. Supongo que será algun bug del programa. Lo dicho, no recomendado.