CentOS Apache日志主要分为两类:访问日志(Access Log)和错误日志(Error Log),分别记录客户端访问信息和服务器运行错误信息。
访问日志记录所有客户端对Apache服务器的访问请求,用于分析用户行为、流量来源等。其内容由日志格式决定,常见格式及字段如下:
这是Apache最常用的日志格式,包含客户端信息、请求详情及引用来源等,字段及含义如下:
%h:客户端IP地址(如192.168.1.1);%l:远程日志名称(通常为空,由identd服务提供);%u:远程用户(若启用了HTTP认证,记录认证的用户名;未认证则为空);%t:请求时间戳(格式如[10/Oct/2025:14:30:00 +0800]);%r:请求的第一行(包含HTTP方法、URL及版本,如"GET /index.html HTTP/1.1");%>s:最终响应的HTTP状态码(如200表示成功、404表示未找到、500表示服务器错误);%b:发送给客户端的字节数(不包括HTTP头,如1024表示发送了1KB数据);"%{Referer}i":引用页的URL(即用户是从哪个页面跳转过来的,如"https://www.example.com/";若无引用页则为空);"%{User-Agent}i":客户端用户代理字符串(如"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",标识浏览器、操作系统等信息)。仅包含基础访问信息,字段为:%h %l %u %t \"%r\" %>s %b(对应上述客户端IP、远程日志名称、远程用户、时间戳、请求行、状态码、字节数)。
通过LogFormat指令可自定义日志字段,例如:
LogFormat "%h %m %U %T" custom # 记录客户端IP、请求方法、请求URL、响应时间
CustomLog /var/log/httpd/custom_access_log custom
其中%m表示HTTP方法(如GET、POST),%U表示请求的URL路径,%T表示响应时间(单位:秒)。
错误日志记录Apache服务器运行过程中遇到的错误信息,用于故障排查(如配置错误、权限问题、脚本故障等)。其内容格式如下:
[Thu Mar 04 15:29:13 2021]);[client 192.168.1.1]);[error]表示严重错误、[warn]表示警告、[info]表示普通信息);script '/usr/lib/cgi-bin/test.cgi' not found or unable to stat);/cgi-bin/test.cgi);File does not exist: /var/www/html/nonexistent.html(原因:URL路径错误或文件被删除);script '/usr/lib/cgi-bin/test.cgi' not found or unable to stat(原因:CGI脚本不存在或无法执行);Directory index forbidden by Options directive: /var/www/html/protected(原因:目录未开启索引或权限设置过严);client denied by server configuration: /var/www/html/restricted(原因:访问受限目录未提供有效认证信息)。/var/log/httpd/access_log(CentOS 7及更早版本)或/var/log/apache2/access.log(部分配置);/var/log/httpd/error_log(CentOS 7及更早版本)或/var/log/apache2/error.log(部分配置)。通过修改Apache主配置文件(/etc/httpd/conf/httpd.conf)或虚拟主机配置文件(/etc/httpd/conf.d/vhost.conf)调整日志设置:
CustomLog指令,例如CustomLog /var/log/httpd/access_log combined;ErrorLog指令,例如ErrorLog /var/log/httpd/error_log;LogLevel指令(可选值:debug、info、notice、warn、error、crit、alert、emerg),例如LogLevel warn(仅记录警告及以上级别错误)。