2012-05-01 9 views
5

Ho due directory in/var/www (ad esempio,/var/www/app1 e/var/www/app2) i cui log degli errori vengono inviati a file diversi. Entrambi sono sotto lo stesso dominio, quindi io penso che sia che non posso metterli in host virtuali diversi. Così, per esempio, avrei accedervi come:Server Apache: più directory, diversi registri errori

http://localhost/app1

http://localhost/app2

mi sono imbattuto in questa pagina:

Generate access logs for different subdirectories in Apache

cui soluzione funziona perfettamente per i log di accesso. Tuttavia, l'argomento "env" non sembra funzionare con la direttiva ErrorLog.

Prima di questa "scoperta", stavo lavorando su questo, che sembra sbagliato:

<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> 

sto un po 'perso su quello che dovrei fare. Cioè, se c'è un modo per far funzionare ErrorLog o se dovrei continuare a provare con la configurazione di un host virtuale per ogni directory. Qualsiasi aiuto sarebbe apprezzato! Grazie!

risposta

8

Perché si impostano le opzioni Directory per / nel contesto VirtualHost? Utilizzare <Directory /var/www/app1> invece di <Directory />

A causa della Apache ErrorLog directive docs suo contesto è server config, virtual host - il che significa che è solo possibile definire ErrorLog per l'intero server o per una VirtalHost, non per un Directory. Quindi se vuoi inviare registri diversi a file diversi, prova a usare SetEnvIf per impostare una variabile Env. A partire dalla directory in cui ti trovi, dovrebbe essere qualcosa come SetEnvIf Request_URI ^\/a1\/ a1 e SetEnvIf Request_URI ^\/a2\/ !a1. Quindi scrivere i registri in base alla variabile di ambiente a1.

+0

Grazie per aver corretto il mio errore "Directory"! Per quanto riguarda ErrorLog, ho scoperto come funzionano gli ambienti per separare il log di accesso. Ma non sembra funzionare per il registro degli errori. La mia comprensione è corretta? (Quando provo, ottengo un errore mentre Apache sta analizzando il file di configurazione.) Suppongo che tu abbia ragione: il log degli errori è per un intero server o host virtuale. In base al link che hai inviato, suppongo che un'altra opzione sia quella di reindirizzare ogni voce del registro degli errori a uno script ... Grazie mille per il tuo aiuto! – Ray

+1

Sì, l'ho cercato anche io e sembra che i file ErrorLog non possano essere separati con SetEnvIf. Prego. –

Problemi correlati