Visualizar logs usando Vim
Son muchas las ocasiones en las que nos puede hacer falta visualizar logs: tal vez porque estemos desarrollando una aplicación y queramos tener a mano los logs de depuración, por poner un ejemplo.
Hay muchas maneras de tener a mano los logs de una aplicación. Algunas de las que conozco —de las muchas que hay— son estas:
- Abrir una ventana de terminal y ejecutar
tail -f
sobre el fichero o ficheros de log. - Usar el paginador
less
con la opción+F
en la ventana de terminal para ver los logs con autoscroll. - Usar algún widget para mostrar logs.
- Usar Vim en modo de sólo lectura. Esta es la forma que uso actualmente.
Las ventajas de usar Vim para visualizar logs incluyen la posibilidad de tener
los logs en una pestaña y editar el código en otra, poder hacer búsquedas en el
fichero de log rápidamente —aunque esto también se puede hacer con less
—,
resaltar los resultados de la búsqueda para detectar más fácilmente cuándo la
aplicación escribe un determinado mensaje en el log, y muchas más.
En mi caso particular prefiero tener una instancia separada de GVim para ver los logs y otra para editar código, aunque eso ya entra en el gusto de cada uno.
Así es como lo hago yo:
- En lugar de arrancar GVim usando el comando
gvim
, lo arranco usando el comandogview
. El arrancarlo de esta manera es equivalente a arrancar GVim con la opciónreadonly
activada. - Al comando
gview
le paso el parámetro-p
para que me abra los ficheros de log en pestañas separadas. - También le añado el parámetro
--cmd
con el valor"set autoread | set nomodifiable"
para que, además de recargar los ficheros cada vez que se detecte que han sido modificados al recuperar la ventana el foco, no se puedan modificar los correspondientes búferes. Porque ¿para qué íbamos a querer modificar los logs?
Una vez unidos los tres puntos anteriores, la línea de comandos que nos queda es la siguiente:
$ gview -p --cmd "set autoread | set nomodifiable" fichero1 fichero2 ...
Por último, para evitar tener que escribir todo eso si siempre son los mismos ficheros los que tenemos que mirar, nos basta con crear un alias o un script que nos ejecute el comando.