web-dev-qa-db-fra.com

Utilisation de fichiers journaux distincts pour plusieurs sites

Il y a quelque temps, j'ai quitté Blogger et téléchargé mes blogs sur mon système. Je les ai hébergés avec chaque blog individuel en tant qu'hôte virtuel pendant un certain temps. Plus tard, je les ai importés dans WordPress et je les héberge depuis WP maintenant.

Lorsque je les hébergeais localement en tant qu'hôtes virtuels, chacun d'eux utilisait un fichier journal Apache distinct, mais tous les blogs sont désormais consignés dans le même fichier.

Je ne trouve pas de paramètre dans WordPress, et il n’existe aucun moyen de le spécifier dans un fichier .htaccess car les sites sont virtuels. C'est-à-dire que les blogs WordPress ne sont pas situés sur le lecteur en tant que répertoires séparés - (en outre, les paramètres de journal ne peuvent pas être utilisés dans .htaccess de toute façon).

Comment configurer une installation multiple de WordPress afin qu'un ou plusieurs sites se connectent dans leur propre fichier journal?

la seconde suggestion de toscho d’utiliser SetEnvIf est prometteuse. J'ai réussi à le faire pour mettre l'accès à un site dans un fichier journal séparé et le garder en dehors du journal principal en utilisant les directives ci-dessous.

…
<IfModule log_config_module>
  …
  # I’m re-using the dontlog environment variable because there is no reason to make a special variable (for me), so it avoids having to use an expression (plus, it just makes sense)
  SetEnvIf Request_URI "^/blogs"        dontlog
  SetEnvIf Request_URI "^/blogs/blog1"  blog1
  SetEnvIf Request_URI "^/blogs/foobar" foobar
  …
  CustomLog "../Logs/Main/access.log"  common env=!dontlog
  CustomLog "../Logs/Blogs/blog1.log"  common env=blog1
  CustomLog "../Logs/Blogs/foobar.log" common env=foobar
  …
  UnsetEnv  dontlog
  UnsetEnv  blog1
  UnsetEnv  foobar
</IfModule>
…

Cela fonctionne pour un blog mono-site, mais pour plusieurs sites, le problème consiste à essayer de garder les choses claires et simples, et de simplifier l'ajout de nouveaux blogs, car il semble impossible d'utiliser des variables dans les noms de fichiers de journal comme suit, ce qui implique de créer une entrée séparée. pour chacun et chacune:

…
<IfModule log_config_module>
  …
  SetEnvIf Request_URI "^/blogs"         dontlog
  # Set environment variable to matched regex subexpression corresponding to blog name
  SetEnvIf Request_URI "^/blogs(.+/)"    blog=$1
  …
  CustomLog "../Logs/Main/access.log"    common env=!dontlog
  CustomLog "../Logs/Blogs/%{blog}e.log" common env=blog
  …
  UnsetEnv  dontlog
  UnsetEnv  blog
</IfModule>
…

Je me retrouve avec un journal contenant tous les accès au blog dans un fichier nommé %{blog}e.log.

3
Synetech

Vous pouvez configurer des journaux personnalisés dans votre httpd-vhosts.conf en fonction de la variable HTTP_Host - si votre serveur est un Apache et que vous utilisez des sous-domaines pour chaque site.

Pour les sous-répertoires ( non testés ):

SetEnvIf Request_URI ^sitename1 sitename1
SetEnvIf Request_URI ^sitename2 sitename2
CustomLog sitename1.log common env=sitename1
CustomLog sitename2.log common env=sitename2
1
fuxia