下面以 Debian 系统为例,说明 Apache(通常指 Apache2)日志的配置方法,包括访问日志和错误日志的位置、格式、以及常见自定义方式。
Debian 中 Apache2 的日志默认存放在:
/var/log/apache2/
常见文件:
| 文件 | 说明 |
|---|---|
access.log |
访问日志(所有虚拟主机默认) |
error.log |
错误日志 |
other_vhosts_access.log |
其他虚拟主机访问日志 |
ssl_access.log |
HTTPS 访问日志(如启用 SSL) |
Debian Apache2 的配置文件结构:
/etc/apache2/
├── apache2.conf # 主配置文件
├── ports.conf
├── sites-available/ # 虚拟主机配置
├── sites-enabled/ # 启用的虚拟主机(软链接)
├── conf-available/
├── conf-enabled/
└── envvars # 环境变量(如日志路径)
CustomLog 日志路径 日志格式
示例:
CustomLog /var/log/apache2/access.log combined
Debian 默认定义了几种格式(在 apache2.conf 中):
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
| 格式 | 说明 |
|---|---|
| common | 简单格式 |
| combined | 常用(含 Referer / User-Agent) |
✅ 推荐使用 combined
编辑虚拟主机:
sudo nano /etc/apache2/sites-available/000-default.conf
示例:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
CustomLog /var/log/apache2/example-access.log combined
ErrorLog /var/log/apache2/example-error.log
</VirtualHost>
启用并重启:
sudo a2ensite 000-default.conf
sudo systemctl restart apache2
ErrorLog 日志路径
示例:
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
可选级别(从低到高):
debug
info
notice
warn ← 推荐
error
crit
alert
emerg
示例:
ErrorLog /var/log/apache2/error.log
LogLevel warn
<VirtualHost *:80>
ServerName site1.com
CustomLog /var/log/apache2/site1-access.log combined
ErrorLog /var/log/apache2/site1-error.log
</VirtualHost>
Debian 使用 logrotate 自动轮转 Apache 日志:
配置文件:
/etc/logrotate.d/apache2
常见内容示例:
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 www-data adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null
endscript
}
✅ 无需手动干预
sudo apache2ctl -t
sudo systemctl restart apache2
查看日志:
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
CustomLog / ErrorLog 已配置LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" proxy
CustomLog /var/log/apache2/access.log proxy
如果你愿意,我可以:
你可以直接贴你的 Apache 配置。