2012-05-01 13 views
5

Mam dwa katalogi w/var/www (na przykład/var/www/app1 i/var/www/app2), których dzienniki błędów chcę wysyłać do różnych plików. Oba znajdują się w tej samej domenie, więc nie są w stanie umieścić ich pod różnymi wirtualnymi hostami. Tak więc, na przykład, bym do nich dostęp jako:Serwer Apache - wiele katalogów, różne dzienniki błędów

http://localhost/app1

http://localhost/app2

natknąłem tej strony:

Generate access logs for different subdirectories in Apache

którego rozwiązanie działa idealnie dla dzienników dostępu. Jednak argument "env" nie działa z dyrektywą ErrorLog.

Przed tym „odkrycie”, pracowałem na to, co wydaje się źle:

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

jestem nieco zagubiony o tym, co należy robić. Oznacza to, że jeśli istnieje sposób, aby ErrorLog zadziałał, lub powinienem próbować dalej konfigurować wirtualny host dla każdego katalogu. Każda pomoc będzie doceniona! Dziękuję Ci!

Odpowiedz

8

Dlaczego ustawiasz Directory opcje dla / w kontekście VirtualHost? Użyj <Directory /var/www/app1> zamiast <Directory />

powodu Apache ErrorLog directive docs kontekstu jest server config, virtual host - co oznacza, że ​​jest to tylko możliwe, aby zdefiniować ErrorLog dla całego serwera lub dla VirtalHost, nie dla Directory. Jeśli więc chcesz wysyłać różne dzienniki do różnych plików, spróbuj użyć SetEnvIf, aby ustawić zmienną Env. Oddając się do katalogu, w którym się znajdujesz, powinno to być coś w rodzaju: SetEnvIf Request_URI ^\/a1\/ a1 i SetEnvIf Request_URI ^\/a2\/ !a1. Następnie zapisz logi w zależności od zmiennej środowiskowej a1.

+0

Dziękuję za poprawienie błędu "Katalogu"! Jeśli chodzi o ErrorLog, dowiedziałem się, jak działają środowiska do oddzielania dziennika dostępu. Ale nie wydaje się działać dla dziennika błędów. Czy moje zrozumienie jest poprawne? (Kiedy próbuję, pojawia się błąd, gdy Apache analizuje plik konfiguracyjny.) Zgaduję, że masz rację - dziennik błędów dotyczy całego serwera lub hosta wirtualnego. Opierając się na wysłanym łączu, przypuszczam, że inną opcją jest dopisanie każdego wpisu dziennika błędów do skryptu ... Wielkie dzięki za pomoc! – Ray

+1

Tak, przeszukaliśmy to również i wydaje się, że plików ErrorLog nie można oddzielić za pomocą SetEnvIf. Zapraszamy. –

Powiązane problemy