Aprovecha el precio especial.

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14d

22h

32m

48s

1

Tutorial: Buscar errores en un log mediante uso de la terminal

Encontrar posibles errores en la ejecución de un código puede ayudar a la detección temprana de errores. Suponiendo que nuestro programa almacena logs de la ejecución de los programas es posible extraer los mensajes de error de los mismos si estos manejan un formato. Para el propósito de este tutorial nos bastará con asumir que, en el log de errores, un error se identifica por estar precedido por la palabra error:.
Asimismo, asumiremos que nuestro servidor cuenta con varios proyectos que se ejecutan en paralelo, por lo que es necesario revisar los logs de errores de cada uno. De esta forma, es posible establecer un algoritmo sencillo que permita ubicar donde se ha generado un error en nuestro código:

  1. Encontrar todos los archivos de mi sistema que tengan la extensión .log
  2. Ubicar dentro de mis archivos las lineas que tengan la palabra error
  3. Redirigir el flujo de contenido a un archivo de errores que pueda ser estudiado por un usuario en particular.

Vamos a ir paso por paso a ver que necesitamos en cada uno

  1. Encontrar mis archivos .log

Esta tarea requiere el uso del comando find, el cual se encarga de buscar los archivos que están en una ruta específica. El uso del mismo se da de la siguiente forma

find<ruta> -name <nombre>

Donde ruta especifica el directorio sobre el cual se ejecutará la búsqueda y nombre es un wildcard que nos ayuda a identificar los archivos. En nuestro caso específico, estamos asumiendo que los errores quedan almacenados en un archivo .log que se genera automáticamente por las aplicaciones que se corren en el servidor. Dado que nos interesa hacer un barrido de todos los archivos del computador, el primer paso para lograr el cometido será estar sobre la carpeta home, la cual se puede acceder mediante el comando

cd ~

De esta forma, podemos ejecutar estos comandos de forma sincrónica tal que permita acceder a los archivos .log de la máquina

cd ~ && find ./ --name *-log

Cuyo resultado debe asemejarse a

.//log.log
.//dir2/log.log
.//dir1/log.log

Completando el primer paso para cumplir el objetivo

  1. Buscar todas las líneas que tengan una línea de error

A continuación, es necesario buscar todas las líneas de los archivos que contengan el formato de error previamente definido. Para ello, contamos con el comando grep que busca expresiones regulares dentro de archivos. El uso del mismo se da de la siguiente forma

grep<regex>file

De esta forma, sería posible concatenar la salida del comando file a grep con el fin de obtener las lineas de error tal que

find ./ --name *-log | grep error

Sin embargo, este comando no funciona según lo esperado, puesto que grep buscará las lineas que de error en las lineas de output del comando find. Para ello usamos el comando xargs que ejecutará el comando grep para cada una de las lineas de salida de find. De esta forma, el comando a ejecutar se vería de la siguiente forma

cd ~&& find ./ --name *-log | xargs grep error

cuyo resultado se ve a continuación

.//log.log:error: Error genérico
.//log.log:error: usuario no encontrado
.//dir2/log.log:error: Usuario no registrado
.//dir2/log.log:error: Usuario y contraseña no corresponden
.//dir1/log.log:error: no encontrado js package
.//dir1/log.log:error: por favor instaler paquete
  1. Redirigir los errores a un archivo de errores
    Por último, será necesario que estos errores queden almacenado en un archivo que solamente sea de errores. Para ello podemos podemos redireccionar el output obtenido en el punto 2 a un archivo de errores.txt. Para ello se usa el operador > que. Por lo que finalmente obtendríamos un comando según se ve a continuación
cd ~&& find ./ --name *-log | xargs grep error > errores.txt

Tal como se ve en el proceso, es posible crear un script en la terminal que encuentre automáticamente todos los errores que han producido nuestras aplicaciones. Espero que el tutorial les sirva en sus proyectos futuros

Escribe tu comentario
+ 2