Apache日志
apache日志位置
1 | ## CentOS,Fedora,RedHat: |
访问日志文件
始终将访问日志写入单个文件不是可行的方法。 随着时间的流逝,在标准的Web服务器中,将有许多访问日志文件,它们以结构化的方式命名。 我们可以使用ls
命令列出访问日志文件。
1 | ls -lh /var/log/apache2/access.* |
将旧的访问日志文件名加1到文件名的末尾,最后2个最近的访问日志文件后将压缩较旧的访问日志文件,以节省空间。 默认情况下,使用gzip或gz压缩,并且压缩文件的名称类似于
access.log.2.gz
,以表示使用gzip压缩了该文件。
zless读取压缩的访问日志文件
1 | zless /var/log/apache2/access.log.2.gz |
zgrep搜索,过滤和Grep压缩访问日志
1 | zgrep Mozilla /var/log/apache2/access.log.2.gz |
Apache访问日志
格式分类
apache中日志记录格式主要有两种,普通型(common)和复合型(combined),安装时默认使用普通型(common)类型日志记录访问信息。
配置文件位置&格式
apache2服务器的配置文件位置/etc/apache2/apache2.conf
CentOS或RedHat/etc/httpd/httpd.conf
LogFormat指令:定义格式并为格式指定一个名字,以后我们就可以直接引用这个名字。
CustomLog指令:设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。
默认日志格式
1 | 192.168.77.175 - - [18/Aug/2021:03:54:21 -0400] "GET /icons/openlogo-75.png HTTP/1.1" 200 6040 "http://192.168.88.132:8088/" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" |
1 | LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined |
%h
客户端的IP地址
%l
客户端身份 (输出中的连字符-
表示请求的信息不可用)
%u
客户端的userid(如果用户已通过身份验证)
%t
请求到达的日期时间
\"%r\"
Client 端的请求行以双引号引起来,包含客户端使用方法,请求资源,使用协议。%m %U%q %H
”将记录方法,路径,查询字符串和协议,从而得到与\"%r\"
完全相同的输出
%>s
服务器发送回客户端的响应码
%O
发送的字节(包括 Headers)不能为零 mod_logio
模块 Apache 模块 mod_logio
\"%{Referer}i\"
HTTP 请求 Headers,提供客户端报告已被引用的站点
\"%{User-agent}i\"
用户代理 HTTP 请求 Headers,这是客户端浏览器报告的有关其自身的标识信息
%b
返回给客户端的对象的大小,不包括响应头。若没有内容返回给客户端该值为-
。要记录0
无内容,请改用%B
%v
用于记录正在处理请求的虚拟主机的名称。然后,可以使用诸如split-logfile之类的程序对访问日志进行后处理,以便将其分为每个虚拟主机一个文件。
Apache错误日志
1 | [Fri Aug 20 03:35:41.969417 2021] [mpm_prefork:notice] [pid 1835] AH00163: Apache/2.4.46 (Debian) configured -- resuming normal operations |
1 | ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M" |
Format String | Description |
---|---|
%% |
百分号 |
%a |
Client 端 IP 地址和请求的端口 |
%{c}a |
基础对等 IP 地址和连接端口(请参阅mod_remoteip模块) |
%A |
本地 IP 地址和端口 |
%{name}e |
请求环境变量名称 |
%E |
APR/OS 错误状态代码和字符串 |
%F |
日志调用的源文件名和行号 |
%{name}i |
请求 Headers名称 |
%k |
此连接上的保持活动请求数 |
%l |
消息的日志级别 |
%L |
请求的日志 ID |
%{c}L |
连接的日志 ID |
%{C}L |
连接的日志 ID(如果用于连接范围),否则为空 |
%m |
记录消息的模块的名称 |
%M |
实际的日志消息 |
%{name}n |
要求说明名称 |
%P |
当前进程的进程 ID |
%T |
当前线程的线程 ID |
%{g}T |
当前线程的系统唯一线程 ID(与top 显示的 ID 相同;当前仅 Linux) |
%t |
当前时间 |
%{u}t |
当前时间,包括微秒 |
%{cu}t |
紧凑型 ISO 8601 格式的当前时间,包括微秒 |
%v |
当前服务器的规范ServerName。 |
%V |
根据UseCanonicalName设置为请求提供服务的服务器的服务器名称。 |
\ (反斜杠空格) |
非场定界空间 |
% (空间百分比) |
字段定界符(无输出) |