下面以 Linux(Debian/Ubuntu)下的 Apache2 为例,说明如何设置 Apache2 的日志(访问日志和错误日志)。
Apache2 主要有两类日志:
访问日志(Access Log)
记录每一次 HTTP 请求
默认文件:/var/log/apache2/access.log
错误日志(Error Log)
记录服务器运行错误、PHP 错误等
默认文件:/var/log/apache2/error.log
配置文件位置(常见):
/etc/apache2/apache2.conf/etc/apache2/conf-enabled/ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
LogLevel 可选值(由少到多):
emerg alert crit error warn notice info debug
Apache 使用 LogFormat 定义格式:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog ${APACHE_LOG_DIR}/access.log combined
常见格式:
commoncombined(最常用)编辑虚拟主机配置(如 /etc/apache2/sites-available/example.conf):
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example
ErrorLog ${APACHE_LOG_DIR}/example_error.log
CustomLog ${APACHE_LOG_DIR}/example_access.log combined
</VirtualHost>
这样可以为每个站点单独设置日志。
Apache 自带 rotatelogs 工具:
CustomLog "|/usr/bin/rotatelogs ${APACHE_LOG_DIR}/access_%Y%m%d.log 86400" combined
说明:
86400 = 一天(秒)Debian/Ubuntu 默认已配置:
/etc/logrotate.d/apache2
可查看或调整:
cat /etc/logrotate.d/apache2
# 查看错误日志
tail -f /var/log/apache2/error.log
# 查看访问日志
tail -f /var/log/apache2/access.log
# 修改配置后重载
systemctl reload apache2
如果你遇到:
error.logaccess.logLogLevel 不低于 warn如果你愿意,可以告诉我:
我可以给你更精确的配置示例。