Apache错误日志由ErrorLog和LogLevel指令控制:ErrorLog指定日志路径(支持绝对路径、相对ServerRoot路径或管道),LogLevel设置输出级别(如warn、error、debug等,级别越低记录越详细),支持全局配置与虚拟主机/模块级覆盖,修改后需configtest验证并reload生效。

Apache 错误日志的输出级别和内容过滤,核心靠 ErrorLog 和 LogLevel 两条指令控制,全部在 httpd.conf(或 Ubuntu 下的 apache2.conf)中配置,无需额外模块。
指定错误日志文件位置
用 ErrorLog 指令告诉 Apache 把错误写到哪:
- 绝对路径直接生效,例如:
ErrorLog /var/log/apache2/error.log - 相对路径以
ServerRoot为基准,比如ErrorLog logs/error_log实际指向/etc/apache2/logs/error_log(若ServerRoot是/etc/apache2) - 支持管道日志,便于自动轮转:
ErrorLog "|/usr/bin/rotatelogs -l /var/log/apache2/error_%Y%m%d.log 86400"
调整日志详细程度(输出级别)
LogLevel 决定哪些消息会被记录。级别越低,信息越细,但日志体积越大:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 生产环境推荐
LogLevel warn或LogLevel error,兼顾可读性与性能 - 排查问题时临时调高,如
LogLevel info或LogLevel debug(注意:debug 会显著增加 I/O 负担) - 级别有继承性:设为
warn,则emerg、alert、crit、error、warn都会记录;设为error,就只记emerg到error
按模块或虚拟主机精细控制
全局 LogLevel 可被局部覆盖,实现差异化的日志粒度:
- 在某个
<VirtualHost>块内加一行LogLevel error,该站点只记录错误及以上 - 对特定模块单独设级,例如启用 ModSecurity 后常用:
LogLevel warn mod_security2:notice,让主日志保持简洁,同时保留防火墙关键提示 - 不支持正则或关键词过滤,但可通过
SetEnvIf+CustomLog配合实现访问日志的条件记录——错误日志本身不支持这类动态过滤
验证与生效要点
改完配置后必须检查语法并重载服务:
- 检查配置是否合法:
apachectl configtest或apache2ctl configtest - 确认当前生效的设置:
apachectl -V | grep DEFAULT_ERRORLOG查默认路径,grep -r "LogLevel\|ErrorLog" /etc/apache2/查实际配置位置 - 重启或重载:
systemctl reload apache2(推荐 reload,避免连接中断)

















