apache日志由errorlog和customlog指令控制,前者记录服务异常,后者记录客户端请求;需协同配置路径、格式与权限,并建议启用logrotate或rotatelogs轮转。

Apache 日志系统主要靠 ErrorLog 和 CustomLog 两条指令控制,前者记录服务异常(如配置错误、模块加载失败),后者记录客户端请求详情。配置不难,但路径、格式、权限三者必须协同到位。
明确日志路径与基础写法
在主配置文件(httpd.conf 或 apache2.conf)中直接设置:
-
ErrorLog 指令指定错误日志位置,例如:
ErrorLog /var/log/apache2/error.log -
CustomLog 指令指定访问日志路径和格式,例如:
CustomLog /var/log/apache2/access.log combined - Linux 下常用路径变量:
${APACHE_LOG_DIR}(通常指向/var/log/apache2或/var/log/httpd),可简化书写
选择或自定义日志格式
预定义格式如 common、combined 直接可用;若需额外字段(如真实 IP、响应时间),需用 LogFormat 自定义:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 先定义格式名称与字段组合:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" myformat
(%D表示请求处理耗时,单位微秒) - 再在 CustomLog 中引用:
CustomLog /var/log/apache2/access.log myformat - 确保
mod_log_config模块已启用(默认开启,无需额外操作)
确保日志目录可写
Apache 进程以特定用户运行(如 www-data 或 apache),日志路径所在目录必须赋予该用户写权限:
- 创建目录并赋权(以 Ubuntu 为例):
sudo mkdir -p /var/log/apache2sudo chown www-data:adm /var/log/apache2sudo chmod 755 /var/log/apache2 - 若日志路径含子目录(如
/var/log/apache2/vhost1/),每级目录都要检查权限 - 权限错误会导致 Apache 启动失败或日志静默丢失,可通过
sudo apache2ctl configtest验证配置有效性
日志轮转建议(避免磁盘占满)
生产环境必须配置日志轮转。推荐两种方式:
-
logrotate(系统级,最常用):
编辑/etc/logrotate.d/apache2,添加规则(如 daily、rotate 52、compress) -
rotatelogs(Apache 内置):
CustomLog "|/usr/sbin/rotatelogs /var/log/apache2/access.log.%Y%m%d 86400" combined
注意:管道写法要求 rotatelogs 可执行且路径正确









