Apache 日志“不记录”通常不是完全没写,而是配置、权限、路径或请求本身导致没落到你以为的那个文件。下面按最常见原因逐条排查。
ls -l /var/log/apache2/ # Debian/Ubuntu
ls -l /var/log/httpd/ # CentOS/RHEL
检查虚拟主机或主配置:
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
常见问题:
# 注释CustomLog off✅ 临时验证:
CustomLog /var/log/apache2/test.log combined
localhost 但日志在 example.com 的 vhostServerName排查:
apachectl -S
确认你访问的域名/IP 对应哪个 vhost。
以下情况 默认不记录或提前结束:
RewriteRule 重定向RewriteRule ^ - [L]
或 301/302 后没继续处理。
Deny / Require 拒绝Require all denied
→ 可能只进 error.log,不进 access.log
Apache 根本没收到请求。
LogLevel warn
如果你期待的是 notice / info,需要:
LogLevel info
Apache 用户(www-data / apache)不能写日志目录:
ps aux | grep apache
ls -ld /var/log/apache2
解决:
chown -R www-data:adm /var/log/apache2
chmod 755 /var/log/apache2
例如:
CustomLog "|/usr/bin/rotatelogs ..." combined
如果 rotatelogs 不存在 → 直接不写。
docker logs <container>
apachectl configtest 无错CustomLog 已启用如果你愿意,可以把下面信息发我,我可以直接帮你定位: