本文介绍: 在开发程序解析web日志时,遇到了一些关于access.log问题,于是便把问题总结如下

下面总结了本人在遇到access.log相关问题总结的东西。

apache中,如何配置access.log记录的精细度?

可以使用Apache的LogFormat指令配置access.log记录精细度。
例如,您可以使用以下指令:

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
CustomLog /path/to/access_log combined

上面的配置定义一个名为“combined”的自定义记录格式,并将其用作日志文件格式。您可以更改指令中的格式字符串以调整记录的精细度。

什么情况下,access.log会记录?

Apache的access.log文件在每次有用户访问时都会被记录。这可以用户浏览网站下载文件提交表单或进行其他类型请求。每条记录都会包含请求的详细信息,包括:

IP地址请求客户端IP地址时间戳:请求发生的时间请求方法请求使用的HTTP方法例如GET或POST)。
请求资源客户端请求的URL。
状态码:服务器响应的HTTP状态码(例如200或404)。
数据量服务器响应数据量引用页面:如果存在,该请求的来源页面。
User-Agent客户端使用浏览器信息

可以通过调整Apache的配置,来决定记录的信息种类和细节

如何调整配置?

可以通过以下步骤来调整Apache的配置:

打开Apache的配置文件:您可以使用文本编辑打开Apache的配置文件,通常位于/etc/httpd/conf/httpd.conf

查找LogFormat指令:查找LogFormat指令,该指令定义了您希望在access.log中记录的信息

调整格式字符串:在LogFormat指令中,您可以调整格式字符串,以指定您希望记录的信息。您可以参考Apache文档,了解可用的格式字符串字符

保存更改:保存更改并退出文本编辑器。

重新启动Apache:使用以下命令重新启动Apache以使更改生效

sudo service httpd restart

注意:上面的步骤假设您正在使用Linux系统,并且安装了Apache HTTP服务器。如果使用的是其他操作系统服务器软件步骤可能有所不同。

如何调整格式字符串

格式字符串定义在Apache配置文件的LogFormat指令中的一个字符串,用于指定access.log文件中记录的信息。下面是一些常见的格式字符串:

记录完整请求信息:

LogFormat "%h %l %u %t "%r" %>s %b" common

记录客户端IP地址、请求时间、请求方法、请求的URL、HTTP状态码和数据量

LogFormat "%h %t "%r" %>s %b"

记录客户端IP地址、请求时间、请求方法、请求的URL、HTTP状态码、数据量和请求的用户代理

LogFormat "%h %t "%r" %>s %b "%{User-Agent}i""

您可以根据您的需求在格式字符串中添加删除字符,以指定您希望在access.log文件中记录的信息。例如,您可以将格式字符串更改为:

LogFormat "%h %t "%r" %>s %b "%{Referer}i""

以记录客户端的请求来源。

请注意,您在格式字符串中选择的字符将影响access.log文件中记录的信息的精细度。因此,请谨慎选择您希望记录的信息。

如果只记录IP地址日期时间,请求方法http状态大小。那该怎么设置

您可以在Apache配置文件中使用以下LogFormat指令:

LogFormat "%h %t "%r" %>s %b"

该指令将记录客户端的IP地址(%h)、请求时间(%t)、请求方法(%r)、HTTP状态(%>s)和数据量(%b)。

请注意,在Apache配置文件中,您必须将LogFormat指令放在CustomLog指令之前,以指定使用的日志格式。例如

LogFormat "%h %t "%r" %>s %b" custom_format
CustomLog "logs/access.log" custom_format

完成后,您需要重新启动Apache以使新的配置生效

为什么配置文件多个LogFormat

Apache允许多个LogFormat指令,以支持不同的日志格式。您可以为不同的日志目的定义不同的LogFormat,并在CustomLog指令中选择您希望使用的格式。

例如,您可以定义一个LogFormat指令来记录访问日志的详细信息,并定义一个LogFormat指令来记录更简单的信息,供分析统计使用。

这样,您可以在不同的场景中使用不同的日志格式,以满足您的不同需求

使用多种LogFormat,会生成多个日志文件吗?

不会。Apache中的每个CustomLog指令仅使用一个LogFormat格式,并生成一个日志文件。

例如,如果您有两个LogFormat指令,并定义两个CustomLog指令,分别使用这两个LogFormat,则会生成两个日志文件。每个日志文件仅记录使用对应LogFormat格式的日志记录。

因此,如果您希望使用不同的日志格式生成多个日志文件,则需要每个日志格式定义一个单独的CustomLog指令。

日志基本格式

127.0.0.1 - - [06/Feb/2023:14:35:09 +0800] "GET /pikachu/vul/fileinclude/fi_remote.php HTTP/1.1" 200 34081
127.0.0.1 - - [06/Feb/2023:14:35:14 +0800] "GET /pikachu/vul/csrf/csrf.php HTTP/1.1" 200 37494
127.0.0.1 - - [06/Feb/2023:14:35:20 +0800] "GET /pikachu/vul/xxe/xxe.php HTTP/1.1" 200 34041
127.0.0.1 - - [06/Feb/2023:14:35:21 +0800] "GET /pikachu/vul/xxe/xxe_1.php HTTP/1.1" 200 33519
127.0.0.1 - - [06/Feb/2023:14:35:31 +0800] "GET /pikachu/vul/dir/dir.php HTTP/1.1" 200 35073
127.0.0.1 - - [06/Feb/2023:14:35:33 +0800] "GET /pikachu/vul/dir/dir_list.php HTTP/1.1" 200 33730
127.0.0.1 - - [06/Feb/2023:14:36:31 +0800] "-" 408 -

这是Apache的access.log文件的一个样例每行记录了一次HTTP请求的信息。

记录的信息包括:

IP地址:127.0.0.1
日期时间:06/Feb/2023:14:35:09 +0800
请求方法:GET
请求的URL:/pikachu/vul/fileinclude/fi_remote.php
HTTP协议版本:HTTP/1.1
HTTP状态:200
数据大小:34081
注意,格式可能因Apache的配置不同而有所不同,但通常会包含上述信息的类似格式。

为什么最后一行不一样?

最后一行数据不同,因为它表示的是一次HTTP请求的错误

请求方法是 “-”,这表示客户端没有发送请求方法。
HTTP状态是408,这是一个HTTP请求超时状态码。
数据大小是 -,这表示没有发送数据
由于这是一次错误的HTTP请求,因此它不会生成任何响应,并且无法提供关于该请求的详细信息。

原文地址:https://blog.csdn.net/qq_56438857/article/details/128902917

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_24412.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注