1 votes

Plusieurs journaux d'erreurs Apache pour un hôte virtuel

J'ai une application PHP mal écrite qui produit un grand nombre de messages E_NOTICE et E_WARNING dans le journal des erreurs. Je ne peux pas y faire grand-chose, mais il est difficile de garder la trace de ces vraies erreurs comme E_ERROR et pire encore.

La question est la suivante : puis-je avoir plusieurs fichiers journaux d'erreurs avec différents LogLevels pour un seul hôte virtuel dans Apache ?

Par exemple, un avec LogLevel notice et un avec LogLevel error.

0 votes

J'espère que vous avez pu résoudre votre problème. Si ma réponse vous a été utile, j'apprécierais que vous la marquiez comme acceptée afin que je puisse en être crédité. Merci

0voto

Jonathan Mayhak Points 4183

Je ne sais pas s'il y a un moyen natif de le faire (mais voir le bas de cette réponse), mais si vous êtes sous Linux, vous pourriez lancer quelques commandes sur le journal principal comme tail -f /path/to/main/ | grep errorstring > error.log tail -f /path/to/main/ | grep warningstring > warning.log

L'option -f permet de continuer à surveiller les nouvelles entrées. Remplacez errortring ou warningstring par le texte exact qui sera enregistré pour toutes les entrées de type error ou de type warning.

Vous pouvez les exécuter en arrière-plan et ainsi ils ne se terminent pas lorsque votre session Shell se ferme en mettant chaque commande dans un Shell bash et en l'exécutant ensuite en utilisant la syntaxe suivante nohup /path/to/Shell.sh >/dev/null 2>&1 &

S'il s'agit d'une utilisation temporaire, vous pouvez les démarrer manuellement en quelques sessions d'écran. Pour une utilisation à long terme, veillez à mettre en place une rotation des journaux afin qu'ils ne deviennent pas trop volumineux.

Une autre approche plus native consisterait à définir une fonction de gestion des erreurs PHP personnalisée pour assurer la journalisation. Vous pourriez l'appliquer à tout le code PHP sans modifier l'application en utilisant la directive ini auto_prepend_file.

0 votes

Merci pour les deux solutions. J'essayais d'éviter d'ajouter de nouveaux scripts à cause de la rotation des journaux, cependant je ne connaissais pas la directive auto_prepend_file donc je vais essayer.

0voto

Melissa Points 1

Une autre façon de procéder consiste à configurer le démon rsyslog pour créer ces fichiers. En gros, vous pouvez configurer une règle de sortie vers un fichier basé sur une correspondance de texte. Ouvrez le fichier /etc/rsyslog.conf et collez-y ceci

si $programname == 'mon-nom' et $msg contient 'errortring' alors /var/log/my-error.log

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X