Dans mon Apache2 access.log, comment filtrer ce qui est affiché?

Quelqu’un m’a dit de le faire afin de garder une trace des dernières personnes frappant mon serveur:

tail -f access.log 

Cependant, cela montre tous les “include”, y compris le fichier JS, les graphiques, etc. Et si je voulais juste voir les pages que les gens frappaient? Comment filtrer cela en utilisant tail -f?

Vous pouvez diriger la sortie via grep ou awk . Par exemple, si toutes vos pages ont un .php dans l’URL, vous pouvez essayer ce qui suit:

 tail -f access.log | grep '\.php' 

Si vos journaux d’access incluent un champ de référence, ce qui précède correspondra également à de nombreuses ressources. Nous nous intéressons uniquement aux événements avec .php dans le champ de requête, pas au champ référent. En utilisant awk , nous pouvons distinguer entre ceux-ci.

 tail -f access.log | awk '$7 ~ /\.php/ { print }' 

Vous devrez peut-être ajuster $7 si votre format de journal est inhabituel.

si vous diffusez des fichiers .php:

 tail -f access_log | grep ".php" 

alternativement, si tous vos inclus sont dans un dossier nommé “include”, par exemple:

 tail -f access_log | grep "include" -v 

ou si vous voulez compter les hits dans un certain fichier:

 grep "filename" access_log -c