apache日志位置

1
2
3
4
5
6
## CentOS,Fedora,RedHat:
/var/log/httpd/access.log
## Ubuntu,Debian,Mint:
/var/log/apache2/access.log
/var/log/apache/access.log
/var/log/httpd-access.log

访问日志文件

始终将访问日志写入单个文件不是可行的方法。 随着时间的流逝,在标准的Web服务器中,将有许多访问日志文件,它们以结构化的方式命名。 我们可以使用ls命令列出访问日志文件。

1
ls -lh /var/log/apache2/access.*

image-20210827174205366

将旧的访问日志文件名加1到文件名的末尾,最后2个最近的访问日志文件后将压缩较旧的访问日志文件,以节省空间。 默认情况下,使用gzip或gz压缩,并且压缩文件的名称类似于access.log.2.gz ,以表示使用gzip压缩了该文件。

zless读取压缩的访问日志文件

1
zless /var/log/apache2/access.log.2.gz

zgrep搜索,过滤和Grep压缩访问日志

1
2
3
zgrep Mozilla /var/log/apache2/access.log.2.gz
# 搜索和过滤所有压缩文件
zgrep Nmap /var/log/apache2/access.log.*.gz

Apache访问日志

格式分类

apache中日志记录格式主要有两种,普通型(common)和复合型(combined),安装时默认使用普通型(common)类型日志记录访问信息。

配置文件位置&格式

apache2服务器的配置文件位置/etc/apache2/apache2.confCentOS或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"

image-20210830102841285

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设置为请求提供服务的服务器的服务器名称。
\(反斜杠空格) 非场定界空间
%(空间百分比) 字段定界符(无输出)

errorlog

Apache中文文档_logs