Il vous arrive peut-être parfois d’avoir à fouiller des fichiers de log ? Vous utiliser grep pour ça ? Et comment faire quand les logs sont compressés ?

Lorsque le log est normal, c’est à dire non-compressé, on peut utiliser la commande grep suivante:

$ grep --color 'LOWER' test.log
  User Exists (0.8ms)  SELECT 1 AS one FROM "users" WHERE LOWER("users"."email")   = LOWER('foo@example.com') LIMIT 1

Elle va afficher toutes les lignes du fichier test.log qui contiennent le mot LOWER.

Mais si on fait la même chose sur un log compressé:

$ grep --color 'LOWER' test.log.1.gz
$ 1

Ça ne fonctionne pas. Ci-dessus, le $ 1, c’est mon shell qui m’affiche une erreur sous la forme du code de retour (une idée pour un futur article).

Pour chercher dans un fichier compressé avec grep, on peut utiliser très simplement la commande zgrep:

$ zgrep --color 'LOWER' test.log.1.gz
  User Exists (0.8ms)  SELECT 1 AS one FROM "users" WHERE LOWER("users"."email")   = LOWER('foo@example.com') LIMIT 1

Et voilà.

À demain.