Ubuntu的Apache存储日志在主文件夹

我试图设置一个Apache的服务器,每个用户在他的主文件夹中有一个日志文件夹和所有的错误/访问日志存储在该文件夹。

我目前的设置:

<VirtualHost *:80> DocumentRoot /home/user/public_html ErrorLog /home/user/logs/error.log CustomLog /home/user/logs/access.log combined LogLevel info </VirtualHost> <VirtualHost *:80> DocumentRoot /home/user1/public_html ErrorLog /home/user1/logs/error.log CustomLog /home/user1/logs/access.log combined LogLevel info </VirtualHost> 

这个设置的问题是,如果我访问user1的网站

  http://localhost/~user1/ 

所有日志都存储在/ home / user / logs /中,而不是/ home / user1 / logs /中。 我如何解决这个问题,以便将日志存储在正确的位置?

CustomLog for apache 2.2是每个服务器或每个虚拟主机设置, http://localhost/~user1/http://localhost/~user2/ type URIscheme都是同一个默认虚拟主机中的别名。

像下面的工作为CustomLog(ErrorLog似乎不支持env修饰符)

 <VirtualHost *:80> DocumentRoot /var/www/html ErrorLog logs/error_log SetEnvIf Request_URI ^~user1 user1 SetEnvIf Request_URI ^~user2 user2 CustomLog /home/user1/logs/access.log combined env=user1 CustomLog /home/user2/logs/access.log combined env=user2 ... </VirtualHost> 

你需要考虑的是,用一个不重要的用户数量,给每个他自己的日志会在apache上放置额外的资源需求。

它可以处理的日志文件的数量有一个简单的限制 – 系统的文件描述符限制。

另外,您不能在单个虚拟主机中分割错误日志。