我的问题可能有点令人困惑,对此我深表歉意。以下是我需要的内容:
好吧,我有(假设)3个网站托管在一个Apache上(它们在每个VirtualHost
设置中定义。然后我现在分别记录他们的访问日志,如下所示:
- /var/log/httpd/website-a.com.access_log
- /var/log/httpd/website-b.com.access_log
- /var/log/httpd/website-c.com.access_log
所以一切都很好。但是同时,我还希望它们(所有访问日志)位于 Apache 的默认本地主机日志文件中(我不确定该怎么称呼它)。 或许:
- /var/log/httpd/access_log(我认为这是默认的)
换句话说,有没有办法(如何)以分离的方式保存访问日志,同时将所有日志也保存在同一个组合文件中?
这样我就可以在单独的文件中查看每个访问日志。同时,如果需要,我还可以在一个地方查看所有日志。
答案1
这可以做到。无需在每个 VirtualHost 部分创建 CustomLog 条目,而是在全局配置中使用 SetEnvIfNoCasehttpd配置文件如果域匹配则设置一个变量,然后将该变量启用的条目记录到文件中。
例如
SetEnvIfNoCase Host website-a.com weba
SetEnvIfNoCase Host website-b.com webb
SetEnvIfNoCase Host website-c.com webc
CustomLog /var/log/httpd/website-a.com.access_log combined env=weba
等等。当然,您必须考虑域名的变化,如果您需要更具体地说明子域名,则可能需要使用正则表达式。
[编辑] 您可能需要转义域名中的点。