pix*_*x0r 16 log-files virtualhost apache-2.2
我在 Web 服务器上设置了许多虚拟主机,每个主机都有自己的错误和访问日志。的相关行httpd.conf是这样的:
ErrorLog /var/log/httpd-error.log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/httpd-access.log combined
NameVirtualHost *:80
<VirtualHost *:80>
ServerName myhost.com
ServerAlias www.myhost.com
DocumentRoot /var/www/myhost.com/htdocs
ErrorLog /var/www/myhost.com/log/error.log
CustomLog /var/www/myhost.com/log/access.log combined
</VirtualHost>
# ... many more VirtualHosts
Run Code Online (Sandbox Code Playgroud)
目前,我在 /var/log/httpd-error.log 中收到了一些随机错误,但在 /var/log/httpd-access.log 中却什么也没有。是否可以将所有访问和错误复制到共享日志文件中?是否可以在不向每个 VirtualHost 添加新条目的情况下执行此操作?
Ste*_*ski 17
见http://httpd.apache.org/docs/2.2/logs.html#virtualhost
如果 CustomLog 或 ErrorLog 指令放置在一个部分中,则该虚拟主机的所有请求或错误将仅记录到指定的文件中。任何没有日志指令的虚拟主机仍会将其请求发送到主服务器日志。
换句话说,如果您将 Logging 指令放在 VirtualHost 部分中,它将覆盖主服务器配置中的 Logging 指令。如果要登录到单个日志文件,请从 VirtualHost 部分中删除日志配置。
为简单起见,我更喜欢将所有 Access 数据记录到单个日志文件中。稍后,您可以处理日志并将日志文件拆分为虚拟主机的日志文件。此外,写入单个日志文件比一次写入 30 个日志文件更有效地利用计算机资源。只需确保您的 LogFormat 包含“%v”,它将记录虚拟主机的名称。
是否可以将所有访问和错误复制到共享日志文件中?
您可以记录所有错误并访问共享日志文件,但日志文件很难看。首先将Apache日志数据发送到syslog,然后使用syslog发送到本地文件或远程日志服务器。
# Send access logs to syslog
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "|/usr/bin/logger -t httpd -i -p local7.notice" combined
# Send error logs to syslog
ErrorLog syslog:local7
Run Code Online (Sandbox Code Playgroud)
然后在 /etc/syslog.conf
# Send all HTTP log data to this file
local7.* /var/log/http-all.log
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22955 次 |
| 最近记录: |