2013-11-26 2 views
1

У меня есть приложение PHP, которое используется несколькими доменами. Чтобы избежать поддержки нескольких vhosts, я только что установил один «по умолчанию» Apache vhost для направления любого входящего запроса на сервер в каталог приложения.Динамический каталог журнала apache на основе имени хоста

Что я хочу сделать, это установить динамические пути доступа и ошибок в Apache на основе имени хоста, поражающего сервер.

Например, я хотел бы задать пути журнала, чтобы быть что-то вроде:

/var/log/application_name/example.com/error.log 
/var/log/application_name/example.com/access.log 

, когда запрос на example.com производится.

Есть ли жизнеспособный способ сделать это? Я рассмотрел использование любой из переменных среды Apache, но поскольку они настроены по мере захвата запроса, я не думаю, что они были бы доступны для использования в директивах ErrorLog или CustomLog. Я просто должен установить каталог журнала вручную на уровне приложения (т. Е. В PHP)?

Благодаря

ответ

3

Я использую установки, как это, где мой logsplit.sh скрипт записывает в лог-файлы на основе на% U:

<VirtualHost *:80> 
    ServerName myserver.com 
    ServerAlias *.myserver.com 
    VirtualDocumentRoot /home/%1/www/ 
    LogFormat "%U %h %l %u %t \"%r\" %>s %b" common 
    CustomLog "|/usr/local/logsplit.sh" common 
</VirtualHost> 
+0

Могу ли я не делать что-то вроде: "/usr/local/%{HTTP_HOST}.log" common' 'CustomLog. Или, по крайней мере, передать $ {HTTP_HOST} через аргумент logsplit.sh, чтобы я мог разделить хост? – James

+1

Уверен, что вы можете сделать это: LogFormat «% {HTTP_HOST}% h% l% u% t \"% r \ "%> s% b" общий К сожалению, вы не можете использовать vars в пути к файлам журнала –

-1

Вы можете сделать это с VirtualHosts лишь поддерживая 1 VirtualHost для нескольких доменов с помощью ServerAlias:

<VirtualHost *:80> 
     ServerAdmin ... 
     ServerName domain1.bla.com 
     ServerAlias service.bla.com domain5.domain.xxx 
     DocumentRoot /www/vhosts/xxx/public 

     ErrorLog /www/vhosts/xxx/log/error.log 
     CustomLog /www/vhosts/ccc/log/access.log combined 
     LogLevel warn 

     <Directory "/www/vhosts/ccc/public"> 
       Options FollowSymLinks MultiViews 
       php_admin_flag safe_mode On 
       AllowOverride None 
       Order allow,deny 
       allow from all 
     </Directory> 
</VirtualHost> 
+0

Еще один лог-файл ... –

Смежные вопросы