192.168.1.1 - - [10/Oct/2023:12:00:00 +0800] "GET /index.html HTTP/1.1" 200 1024
%h:客户端IP;%t:时间戳;%r:请求行(方法+URL+协议);%s:状态码;%b:响应字节数。Referer(来源页面)和User-Agent(用户代理)。192.168.1.1 - - [10/Oct/2023:12:00:00 +0800] "GET /index.html HTTP/1.1" 200 1024 "https://ref.com" "Mozilla/5.0"。[Wed Oct 11 15:20:30 2023] [error] [client 192.168.1.1] File does not exist: /var/www/html/test.html
debug(调试)→ emerg(紧急),默认error级别。使用LogFormat指令指定格式,格式字符串由%开头的变量和普通字符组成。
%{Referer}i:请求头中的Referer字段;%{User-Agent}i:User-Agent字段。%T:请求处理时间(秒);%D:处理时间(微秒)。LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T" custom_format。通过CustomLog指令指定日志文件路径和格式。
CustomLog "/var/log/apache2/access.log" combined。<VirtualHost *:80>
ServerName example.com
CustomLog "/var/log/apache2/example_access.log" custom_format
</VirtualHost>
```。
rotatelogs工具按时间或大小分割日志,避免文件过大。CustomLog "|/usr/sbin/rotatelogs -l /var/log/apache2/access_%Y%m%d.log 86400" combined(按天分割)。SetEnvIf指令过滤特定请求,例如记录特定IP或User-Agent的日志。mod_log_config未使用时),或使用buffered logs减少磁盘I/O。/var/log/httpd//var/log/apache2/。root或apache用户,权限为755,避免敏感信息泄露。apachectl configtest或httpd -t检查语法错误。systemctl restart apache2(Debian/Ubuntu)或systemctl restart httpd(CentOS/RHEL)。tail -f /var/log/apache2/access.log查看实时日志,或使用goaccess等工具生成可视化报告。