Pour lire ses log en couleurs d’une façon simple, rapide et efficace, j’ai développé u petit script sympathique.
Pour cela installez les paquets less et ccze
aptitude install less ccze
Créez le fichier suivant en le plaçant dans /usr/bin/ et en le rendant exécutable.
chmod +x logview
#!/bin/bash case "$1" in "" | "-h" | "--help") echo "Usage : logview <filename>" echo "-h, --help : this help" echo "Accept gzip file" ;; *) if [[ -f $1 ]] then if [[ `/usr/bin/file -b --mime-type $1` == "application/x-gzip" ]] then /bin/zcat $1 | /usr/bin/ccze -A | /usr/bin/less -R else /bin/cat $1 | /usr/bin/ccze -A | /usr/bin/less -R fi else echo "$1 n'est pas un fichier valide" fi ;; esac
Ce script lit aussi bien les log en texte brut que les logs gzippés.
logview /var/log/syslog logview /var/log/syslog.2.gz
La navigation et recherche se fait comme sous vim
Tapez / pour lancer une recherche puis Entrée
n pour passer à l’occurrence suivante.
q pour quitter.
Il est possible de voir les logs avec une colorisation syntaxique directement et automatiquement dans vim (j’ai enfin trouvé..)
Savoir combien de fois apparait une adresse ip dans un fichier de log
grep -c '10.10.10.10' access.log
Compter le nombre de fois qu’une url de type /news/12345 a été atteinte
egrep -c '^10.10.10.10.*/news/[0-9]+' access.log
Ressortir que les numéros id news qu iont été lu
sed -r '/^10\.10\.10\.10.*\/news\/[0-9]+/!d;s/.*\/news\/([0-9]+).*/\1/' access.log
Pour ces ids, sortir le nombre de fois qu’ils ont été lu pour chacun
sed -r '/^10\.10\.10\.10.*\/news\/[0-9]+/!d;s/.*\/news\/([0-9]+).*/\1/' access.log | sort | uniq -c | less
sed -r 's/^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) .*/ip: \1/' access.log | sort | uniq -c | sort -rh | less cat access.* | awk '{ print $1 }' | sort | uniq -c | sort -n
Y mettre un peu de couleur
rouge
tail -f myfile.log | perl -pe 's/.*SEVERE.*/\e[1;31m$&\e[0m/g'
orange
tail -f myfile.log | perl -pe 's/.*SEVERE.*/\e[1;33m$&\e[0m/g'
vert
tail -f myfile.log | perl -pe 's/.*SEVERE.*/\e[1;32m$&\e[0m/g'