¿Qué es lnav?
lnav, the Logfile Navigator, es un visor de logs para la terminal que fusiona ficheros de log de muchas fuentes en una sola vista ordenada por marca de tiempo. Apúntalo a unos cuantos ficheros, a un directorio o a un archivo comprimido y él solo deduce los formatos (syslog, el journal de systemd, los logs de acceso de Apache y nginx, JSON lines y muchos más), intercala los mensajes por hora, colorea los errores y avisos para que destaquen y sigue los ficheros a medida que crecen. A partir de ahí filtras, buscas, saltas de un error a otro y, cuando una pregunta necesita algo más que una búsqueda, consultas los mensajes con SQL. Abre logs remotos por ssh con la misma facilidad que los locales. lnav está escrito en C++ por Tim Stack y tiene licencia BSD-2-Clause.
apt upgrade.
⚡ Funciones clave de lnav
🔀 Una única línea temporal
Abre a la vez el syslog, el log de una aplicación y el de un servidor web, y lnav intercala sus líneas por marca de tiempo: lees lo que pasó en todo el sistema en el orden en que pasó.
🔍 Detección automática del formato
syslog, el JSON de journald, los logs de acceso de Apache y nginx, JSON lines, logfmt y decenas más se reconocen sin configuración; se interpretan niveles, marcas de tiempo y campos, y se resaltan errores y avisos.
🗄️ SQL sobre tus logs
Cada formato reconocido es una tabla. Pulsa ; y lanza consultas SELECT sobre los mensajes: cuenta errores por host, encuentra las peticiones más lentas, agrupa códigos de estado, con los resultados en la misma ventana.
🌐 Logs remotos por ssh
lnav user@host:/var/log/syslog abre un log de otra máquina a través de tu configuración y claves ssh habituales, sin instalar ningún agente en el servidor.
📦 Ficheros comprimidos y archivos
Los logs rotados en .gz y .bz2 se abren directamente, igual que los archivos .zip y .tar, así que un paquete de soporte se lee sin descomprimirlo antes.
👀 Seguir, filtrar y buscar
Los ficheros se siguen mientras crecen, los filtros ocultan o conservan líneas según un patrón, las búsquedas resaltan cada coincidencia y una sola tecla salta al siguiente error o aviso, para que nada importante se escape.
apt upgrade te mantiene en la última versión.
📦 Instalación desde deb.griffo.io
Paso 1: Añadir el repositorio
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update🆓 Existe un espejo gratis para siempre. deb-free.griffo.io sirve paquetes gratis para siempre: sin cuenta, sin suscripción, como máximo 2 meses por detrás del upstream, correcciones de seguridad inmediatas. Ahora mismo incluye cliamp, Ghostty, lazydocker, Oh My Posh, Uncloud y Zed; lnav no está entre ellas, así que hoy el repositorio de arriba es la única forma de instalarlo — pídelo y puede añadirse.
Paso 2: Instalar lnav
# Instalar la última versión de lnav (sustituye al lnav más antiguo de la distribución)
sudo apt install lnav
# Verificar la instalación
dpkg -s lnav | grep Version# Instalar la última versión de lnav (sustituye al lnav más antiguo de la distribución)
apt install lnav
# Verificar la instalación
dpkg -s lnav | grep VersionPaso 3: Primer arranque
# Los logs de /var/log los pueden leer root y el grupo adm
sudo lnav /var/log
# O lee el journal de systemd como JSON, con cada campo interpretado
journalctl -o json | lnav
# Tus propios logs no necesitan sudo; el formato se detecta solo
lnav ~/app/logs/
# Pulsa ? dentro de lnav para la ayuda integrada, q para salir# Los logs de /var/log los pueden leer root y el grupo adm
lnav /var/log
# O lee el journal de systemd como JSON, con cada campo interpretado
journalctl -o json | lnav
# Tus propios logs no necesitan sudo; el formato se detecta solo
lnav ~/app/logs/
# Pulsa ? dentro de lnav para la ayuda integrada, q para salir🎯 Ejemplos básicos de uso
Leer y seguir logs:
# Los logs rotados y comprimidos se abren directamente, igual que los archivos
lnav /var/log/nginx/access.log.2.gz support-bundle.tar.gz
# Varias fuentes, fusionadas en una línea temporal por marca de tiempo
lnav /var/log/nginx/ ~/app/logs/app.log
# Un log en otra máquina, con tu configuración ssh habitual
lnav user@host:/var/log/syslogFiltros y SQL:
# Dentro de lnav: e / E saltan al error siguiente / anterior, w / W a los avisos
# :filter-in error conservar solo las líneas que coinciden
# :filter-out healthcheck ocultar las líneas que coinciden
# ;SELECT c_ip, count(*) AS hits FROM access_log GROUP BY c_ip ORDER BY hits DESC
# La misma consulta sin interfaz, para scripts
lnav -n -c ';SELECT sc_status, count(*) FROM access_log GROUP BY sc_status' /var/log/nginx/access.logMantenerlo al día:
# lnav se actualiza con el resto del sistema
sudo apt update && sudo apt upgrade
# Qué versión está instalada y cuál es la más reciente disponible
apt policy lnav
# Desinstalarlo
sudo apt remove lnav# lnav se actualiza con el resto del sistema
apt update && apt upgrade
# Qué versión está instalada y cuál es la más reciente disponible
apt policy lnav
# Desinstalarlo
apt remove lnav🔧 Integraciones
lnav lee todo lo que produzca texto: ficheros, tuberías y otras máquinas:
- ssh: las rutas remotas como
user@host:/var/log/syslogpasan por tu configuración y tus claves ssh; el paquete recomiendaopenssh-clientpara esto - Journal de systemd: pasa
journalctl -o json(añade-fpara seguirlo) a lnav y cada campo del journal se puede buscar y consultar - Contenedores:
docker logs -f app 2>&1 | lnavokubectl logs -f pod | lnavdan a la salida de los contenedores el mismo resaltado y el mismo SQL - Portapapeles: marca líneas y pulsa
cpara copiarlas; el paquete sugierewl-clipboardoxclippara Wayland y X11 - Formatos propios: describe un formato de log interno en un fichero JSON e instálalo con
lnav -i myformat.json; desde ese momento tiene detección, resaltado y su propia tabla SQL - Scripts y CI:
lnav -n -cejecuta comandos y consultas sin interfaz, así que el mismo SQL que responde una pregunta de forma interactiva puede ir en un cron o en un pipeline - Documentación: la página man viene con el paquete (
man lnav) y el manual completo está en docs.lnav.org
🚀 ¿Por qué elegir deb.griffo.io?
- Ubuntu oficial: incluye lnav 0.13.2 en 26.04, 0.11.2 en Noble y 0.9.0 en Jammy, cada uno congelado durante toda la vida de su versión
- Descargas de upstream: un zip con un binario estático en la página de releases de GitHub, que copias a mano en tu PATH, sin la página man, y que hay que volver a bajar en cada versión
- Compilar desde el código fuente: una toolchain de C++ más los paquetes de desarrollo de SQLite, PCRE2, ncurses, libarchive y libcurl, y una compilación larga
- deb.griffo.io: última versión con actualizaciones automáticas
- ✅ El mismo nombre de paquete que Ubuntu: el paquete se llama
lnav, exactamente como en el archivo de Ubuntu, así que este repositorio actualiza el lnav de serie en su sitio conapt upgradey unapt removeposterior no deja nada atrás - ✅ La compilación estática oficial: el binario estático musl del propio upstream, sin ninguna dependencia en tiempo de ejecución y con el mismo comportamiento en todas las versiones
- ✅ Paquete completo: el binario
lnavy su página man, conopenssh-clientrecomendado para los logs remotos ywl-clipboardoxclipsugeridos para copiar líneas - ✅ Actualizaciones automáticas: los paquetes se actualizan pocas horas después de cada versión upstream
- ✅ Dos arquitecturas: amd64 y arm64 en todas las versiones, así que el mismo lnav funciona en servidores, portátiles y placas ARM como la Raspberry Pi
- ✅ Multidistribución: funciona en Ubuntu 22.04, 24.04, 25.10 y 26.04
- ✅ Mantenimiento sencillo: actualizaciones con los comandos apt de siempre
📦 Repositorio de compilación del paquete
Los paquetes de Ubuntu se compilan y mantienen automáticamente en este repositorio de GitHub:
- 🪵 lnav-debian - Compilaciones de las últimas versiones
🔗 Paquetes relacionados
También disponibles en deb.griffo.io:
- lazydocker - Una interfaz de terminal para Docker, para encontrar el contenedor cuyos logs necesitas
- k9s - Una interfaz de terminal para clústeres de Kubernetes y sus pods
- ripgrep - Búsqueda recursiva rápida, para buscar en todo un árbol de logs a la vez
- bottom - Un monitor del sistema para la terminal, para lo que los logs no cuentan
- fzf - Un buscador difuso para elegir el log que abrir