laravel-log-viewer maintained by ahinest
Laravel Log Viewer
Visualizador de logs para Laravel con soporte para Blade, Inertia y API.
Permite inspeccionar archivos de log, filtrar registros, visualizar excepciones y administrar múltiples archivos de log desde una interfaz sencilla.
Características
-
Lectura de archivos
.logdentro destorage/logs. -
Soporte para múltiples archivos de log.
-
Selección dinámica de archivos.
-
Filtros por:
- Nivel.
- Canal.
- Fecha.
- Registros con excepción.
-
Soporte para:
- Blade.
- Inertia.
- API JSON.
-
Limpieza de archivos de log.
-
Middleware configurables.
-
Compatible con Spatie Laravel Permission.
-
Detección de contexto JSON.
-
Detección de excepciones.
-
Soporte para logs multilinea.
Requisitos
- PHP 8.1+
- Laravel 10.x
- Laravel 11.x
- Laravel 12.x
Instalación
composer require edwinylil1/laravel-log-viewer
Publicar configuración:
php artisan vendor:publish --tag=logviewer-config
Publicar vistas Blade:
php artisan vendor:publish --tag=logviewer-views
Publicar componentes Vue:
php artisan vendor:publish --tag=logviewer-vue
La vista Inertia publicada es únicamente una referencia.
Debe adaptar:
- Layout principal.
- Componentes UI.
- Sistema de diseño.
- Tailwind/Shadcn.
a la estructura de su aplicación.
Configuración
Archivo:
config/logviewer.php
Log por defecto
'default_log' => 'laravel.log',
Archivo mostrado al ingresar al visor.
Middleware de acceso
'middleware' => [
'web',
'auth',
],
Ejemplos:
'middleware' => [
'web',
'auth',
'permission:view logs',
],
'middleware' => [
'web',
'auth',
'role:super-admin',
],
'middleware' => [
'web',
'auth',
'can:view logs',
],
Compatible con Spatie Laravel Permission.
Middleware para limpieza
'middleware_clear' => [
'web',
'auth',
],
Ejemplo:
'middleware_clear' => [
'web',
'auth',
'permission:clear logs',
],
Permite restringir la limpieza de logs independientemente del acceso de lectura.
Habilitar limpieza
'allow_clear' => true,
Si está deshabilitado, la ruta responderá con error HTTP 403.
Logs autorizados para limpieza
'clearable_logs' => [
'laravel.log',
],
Solo los archivos incluidos en esta lista podrán vaciarse.
Prefijo de rutas
'route' => 'logs',
Genera rutas como:
/logs/log-viewer
/logs/clear
Tipo de interfaz
'ui' => 'blade',
Opciones disponibles:
'blade'
'inertia'
'api'
Vista Blade
'blade_view' => 'logviewer::index',
Vista utilizada cuando ui = blade.
Página Inertia
'inertia_page' => 'LogViewer/Index',
Componente utilizado cuando ui = inertia.
Canales permitidos
'allowed_channels' => [
'local',
'stack',
'daily',
],
Si utilizas canales personalizados deberás agregarlos aquí.
Niveles permitidos
'allowed_levels' => [
'debug',
'info',
'notice',
'warning',
'error',
'critical',
'alert',
'emergency',
],
Basados en los niveles estándar de Monolog.
Rutas
Visor de logs
GET /logs/log-viewer
Limpiar log
DELETE /logs/clear
Parámetros:
{
"log": "laravel.log"
}
Filtros disponibles
Archivo
?log=laravel.log
Nivel
?level=error
Canal
?channel=local
Fecha
?date=2026-06-12
Con excepción
?has_exception=1
Ejemplos
Mostrar errores
/logs/log-viewer?level=error
Mostrar errores del canal local
/logs/log-viewer?channel=local&level=error
Mostrar registros de una fecha
/logs/log-viewer?date=2026-06-12
Mostrar únicamente excepciones
/logs/log-viewer?has_exception=1
Leer otro archivo
/logs/log-viewer?log=test.log
Compatibilidad con Spatie Laravel Permission
Configuración:
'middleware' => [
'web',
'auth',
'permission:view logs',
],
'middleware_clear' => [
'web',
'auth',
'permission:clear logs',
],
Crear permisos:
use Spatie\Permission\Models\Permission;
Permission::create([
'name' => 'view logs',
]);
Permission::create([
'name' => 'clear logs',
]);
Arquitectura
El paquete está organizado utilizando:
- DTOs
- Actions
- Services
- Renderers
- Form Requests
Componentes principales
| Componente | Responsabilidad |
|---|---|
| LogViewerController | Orquesta las peticiones HTTP |
| ReadLogsAction | Lee y filtra registros |
| ClearLogAction | Limpia archivos de log |
| LogParserService | Parsea el contenido de los logs |
| LogFileService | Gestiona archivos de log |
| RendererFactory | Resuelve el renderer configurado |
| BladeRenderer | Renderiza vistas Blade |
| InertiaRenderer | Renderiza páginas Inertia |
| ApiRenderer | Retorna respuestas JSON |
| LogFilters | DTO de filtros |
| LogEntry | DTO de registros |
Roadmap
Características previstas para futuras versiones:
- Paginación de registros.
- Búsqueda por texto.
- Descarga de archivos de log.
- Detección automática de canales.
- Soporte mejorado para logs rotados.
- Estadísticas por nivel.
- Visualización enriquecida de contexto JSON.
- Exportación de registros.
Licencia
MIT