2012-05-01 23 views
5

Tengo dos directorios en/var/www (por ejemplo,/var/www/app1 y/var/www/app2) cuyos registros de errores quiero enviar a diferentes archivos. Ambos están bajo el mismo dominio, por lo que creo que no puedo ponerlos en diferentes hosts virtuales. Así, por ejemplo, me gustaría tener acceso a ellos como:Servidor Apache - múltiples directorios, diferentes registros de errores

http://localhost/app1

http://localhost/app2

me encontré con esta página:

Generate access logs for different subdirectories in Apache

cuya solución funciona perfectamente para los registros de acceso. Sin embargo, el argumento "env" no parece funcionar con la directiva ErrorLog.

Antes de este "descubrimiento", que estaba trabajando en esto, que parece mal:

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    DocumentRoot /var/www/app1 

    <Directory /> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Order deny,allow 
    allow from all 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/app1/error.log 

    LogLevel warn 

    CustomLog ${APACHE_LOG_DIR}/app1/access.log combined 
</VirtualHost> 

que estoy un poco perdido sobre lo que debería hacer. Es decir, si hay alguna forma de hacer que ErrorLog funcione o si sigo intentando configurar un host virtual para cada directorio. ¡Cualquier ayuda sería apreciada! ¡Gracias!

Respuesta

8

¿Por qué establece Directory opciones para / en el contexto VirtualHost? <Directory /var/www/app1> utilizar en lugar de <Directory />

Debido a la Apache ErrorLog directive docs su contexto es server config, virtual host - lo que significa que sólo es posible definir ErrorLog para todo el servidor o para un VirtalHost, no para un Directory. Por lo tanto, si desea enviar registros diferentes a diferentes archivos, intente utilizar SetEnvIf para establecer una variable Env. Depende del directorio donde se encuentre, debería ser algo como SetEnvIf Request_URI ^\/a1\/ a1 y SetEnvIf Request_URI ^\/a2\/ !a1. Luego, escriba los registros según la variable de entorno a1.

+0

¡Gracias por corregir el error de "Directorio"! En cuanto a ErrorLog, descubrí cómo funcionan los entornos para separar el registro de acceso. Pero no parece funcionar para el registro de errores. Es mi entendimiento correcto? (Cuando lo intento, aparece un error mientras Apache analiza el archivo de configuración.) Supongo que tiene razón: el registro de errores es para todo un servidor o host virtual. Basado en el enlace que enviaste, supongo que otra opción es canalizar cada entrada del registro de errores a un script ... ¡Muchas gracias por tu ayuda! – Ray

+1

Sí, he buscado eso también y parece que los archivos ErrorLog no se pueden separar con SetEnvIf. De nada. –

Cuestiones relacionadas