Apache 的访问日志和错误日志由 CustomLog 和 ErrorLog 指令控制,需协同配置路径、格式与权限;Linux 下常用 ${APACHE_LOG_DIR} 变量简化路径,支持 combined 等内置格式或 LogFormat 自定义,须确保日志目录对运行用户(如 www-data)可写,并建议用 rotatelogs 或 logrotate 实现轮转。
Apache 的访问日志和错误日志由 CustomLog 和 ErrorLog 指令控制,格式配置核心在于路径、格式定义与权限三者协同。Linux 下配置不复杂,但需注意细节,否则日志可能写入失败或内容缺失。
在主配置文件(如 /etc/apache2/apache2.conf 或 /etc/httpd/conf/httpd.conf)中设置:
ErrorLog ${APACHE_LOG_DIR}/error.log
其中 ${APACHE_LOG_DIR} 是 Debian/Ubuntu 系统预定义变量,通常指向 /var/log/apache2;CentOS/RHEL 常用 /var/log/httpd
CustomLog ${APACHE_LOG_DIR}/access.log combined
这里 combined 是 Apache 内置的常用格式名
Apache 提供了 common 和 combined 等预定义格式,也可用 LogFormat 自定义:
CustomLog /var/log/apache2/access.log combined
combined 包含 IP、时间、请求行、状态码、字节数、Referer、User-Agent
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %D" myformat
再在 CustomLog 中引用:
CustomLog /var/log/apache2/access.log myformat
mod_log_config 模块默认已启用,无需额外加载Apache 进程以特定用户运行(如 Ubuntu 的 www-data,CentOS 的 apache 或 daemon),日志路径所在目录必须赋予该用户写权限:
sudo mkdir -p /var/log/apache2
sudo chown www-data:adm /var/log/apache2
sudo chmod 755 /var/log/apache2
/var/log/apache2/site1/),每一级都需检查归属与权限sudo apache2ctl configtest 验证配置有效性避免单个日志文件无限增长,推荐配合 logrotate 或 Apache 自带的 rotatelogs:
rotatelogs 示例(每天切割,按北京时间 +8 小时):CustomLog "|/usr/bin/rotatelogs -l /var/log/apache2/access.log.%Y%m%d 86400 480" combined
logrotate 更常用且稳定,配置文件通常位于 /etc/logrotate.d/apache2,可设定保留天数、压缩方式等