Pourquoi ne puis-je pas obtenir Apache directive CustomLog de travail?
Je suis en train d'utiliser Apache CustomLog
directive visant à créer certains des fichiers journaux personnalisés, mais ne peut pas le faire fonctionner. Voici la configuration que j'utilise pour la coutume journaux:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /var/log/apache2/jb_common common
CustomLog /var/log/apache2/jb_referer referer
Apache crée à la fois de ces de journal personnalisée des fichiers au démarrage, donc il a certainement voit le CustomLog
directives, mais il n'a jamais écrit quoi que ce soit à ces fichiers; toutefois, le défaut de journal d'accès (access.log
) est en cours d'écriture.
Des idées? Je suis en cours d'exécution d'Apache 2.2 sur Ubuntu 8.10.
OriginalL'auteur | 2009-02-08
Vous devez vous connecter pour publier un commentaire.
J'ai le même problème avec Ubuntu 9.10 Server et Apache 2.2.12. Je suis la mise en place d'un serveur Subversion avec
mod_dav_svn
et ajouté unCustomLog
directive/etc/apache2/mods-available/dav_svn.conf
pour vous connecter à la Subversion, mais a eu le même problème (le fichier journal a été créé lors de l'Apache a commencé, mais n'a jamais été écrites):Il y a deux solutions de contournement pour le problème que j'ai trouvé, qui, fondamentalement, montant à la même chose. Je suis de documenter à la fois ici parce qu'ils ont différents avantages et inconvénients.
Solution de contournement 1
Supprimer la
CustomLog
la directive à partir de votre fichier de configuration, si vous avez mis en place dans un fichier de configuration séparé.Ajouter le
CustomLog
directive de votre siteVirtualHost
entrée. Pour moi, c'était dans/etc/apache2/sites-available/default-ssl
parce que je suis le seul à en permettre l'accès SSL pour le dépôt Subversion. Si vous utilisez/etc/apache2/sites-available/default
, que vous voulez éditer ce fichier à la place (ou en plus dedefault-ssl
si vous utilisez à la fois).Redémarrer Apache:
sudo /etc/init.d/apache2 restart
Pro
Vous pouvez avoir plusieurs
CustomLog
directives dans leVirtualHost
entrée de votre site, et ils fonctionnent tous.Con
Vous devez déplacer votre
CustomLog
entrée dans votre siteVirtualHost
entrée au lieu de l'avoir dans un fichier de configuration séparé.Solution 2
Commentaire la
CustomLog
directive(s) dans votre siteVirtualHost
entrée. Si vous utilisez l'un des défaut de configurations de site (default
oudefault-ssl
), il y aura unCustomLog
directive pour le journal des accès que vous aurez besoin de commenter (oui, il désactive par défaut d'Apache journalisation des accès).Ajouter votre
CustomLog
directive pour le fichier de configuration approprié. Pour moi, c'était/etc/apache2/mods-available/dav_svn.conf
.Redémarrer Apache:
sudo /etc/init.d/apache2 restart
Pro
Vous pouvez garder votre
CustomLog
directive dans un fichier de configuration séparé.Con
Cette solution a l'inconvénient évident que vous devez la désactiver par défaut d'Apache journalisation des accès, mais pour moi je n'ai pas beaucoup depuis que je suis seulement en utilisant le serveur de Subversion de l'accès.
Conclusion
Aucune de ces solutions de contournement sont vraiment l'idéal, mais je n'ai pas encore trouvé un moyen de le faire fonctionner d'autres que les deux solutions de contournement ci-dessus. Je suppose que nous devrons attendre la prochaine version d'Apache pour que cette question soit fixe.
Notez que c'est exactement par apache docs, httpd.apache.org/docs/2.2/logs.html#virtualhost "Si CustomLog ou le Journal des erreurs de directives sont placés à l'intérieur d'un <VirtualHost> section, toutes les demandes ou des erreurs par l'hôte virtuel seront enregistrés uniquement pour le fichier spécifié. Tout d'hôte virtuel qui n'a pas de journalisation des directives aura toujours son requêtes envoyées au serveur principal journaux."
Quand vous avez dit que "... le fichier de configuration approprié. Pour moi, c'était
/etc/apache2/mods-available/dav_svn.conf
", j'espère que vous étiez senssites-available
(ouconf.d
, ou même le moderneconfs-available
), pasmods-available
Depuis Apache 2.4.19 il y a un GlobalLog la directive: "GlobalLog est utilisé par les hôtes virtuels qui définissent leur propre CustomLog, contrairement à une échelle mondiale spécifié CustomLog."
OriginalL'auteur Mike Spross