Web服务器日志提供了大量关于Web应用程序和用户的信息。Apache是一种非常流行的web服务器,被数百万个web站点使用。Apache提供了不同类型的日志,比如 access
, error
在本教程中,我们将了解如何配置Apache访问日志,并尝试理解日志格式。
Apache访问日志
Apache访问日志提供有关访问Apache Web服务器的信息。当有人通过浏览器访问网站或打开web应用程序时,apacheweb服务器将创建一些关于请求的日志。
Apache访问日志位置
Apache访问日志默认存储在以下目录中。访问日志可以用一个简单的文本编辑器打开,比如kwrite、gedit等,或者只需 cat
在命令行中。
Ubuntu、Debian、Mint:
/var/log/apache2/access.log
CentOS、Fedora、RedHat:
/var/log/httpd/access.log
我们可以在Ubuntu操作系统中用less命令打开Apache访问日志,如下所示。
$ less /var/log/apache/access.log

列出访问日志文件
始终将访问日志写入单个文件是不可行的。在一个标准的web服务器中,随着时间的推移,会有很多访问日志文件,它们是以结构化的方式命名的。我们可以用 ls
命令如下。
$ ls -lh /var/log/apache2/access.*

将添加旧的访问日志文件名 1
为了节省空间,在文件名末尾和最近两次访问日志文件之后,旧的文件将被压缩。默认情况下,使用gzip或gz压缩,压缩文件的名称如下 access.log.2.gz
为了表达它,用gzip压缩。
相关文章: Git-审阅更改
读取压缩访问日志
随着时间的推移,将会有大量的访问日志,其中大部分都将使用不同的压缩算法(如gzip、bzip等)进行压缩。我们可能需要尽快以实用的方式读取这些压缩的访问日志文件。我们可以读取这些压缩的访问日志,而无需使用 zless
命令如下。
$ zless /var/log/apache2/access.log.2.gz
搜索、过滤和Grep压缩访问日志
如果我们需要的不仅仅是读取一个压缩的访问日志文件,我们可以使用其他工具,比如zgrep,它将grep一个gzip压缩文件。在本例中,我们将筛选或grep WebDAV
在我们的压缩日志文件中 access.log.2.gz
.
$ zgrep WebDAV /var/log/apache2/access.log.2.gz

我们也可以搜索和过滤所有压缩文件与单一的命令执行。我们将使用glob*来指定所有给定的压缩访问日志,如下所示。在本例中,我们将搜索 Nmap
在压缩访问日志文件中。
$ zgrep Nmap /var/log/apache2/access.log.*.gz

Apache访问日志格式
Apache访问日志提供了许多关于请求和对这些请求的响应的有用信息。Apache配置使用指令 LogFormat
定义访问日志格式。默认的日志格式如下所示。
LogFormat "%h %l %u %t "%r" %>s %b" common
以下是捷径的含义。
-
%h
客户端的IP地址 -
%l
如果存在客户身份 -
%u
如果用户经过身份验证,则为客户端的userid -
%t
请求到达的日期和时间 -
"%r"
客户端请求的HTTP方法,包括HTTP谓词URI和HTTP版本 -
%>s
是服务器发送回客户端的响应代码 -
%b
返回给客户端的对象的大小
相关文章: Logrotate命令教程及Linux示例
下面是一个Apache访问日志示例
127.0.0.1 - - [16/Aug/2017:07:03:45 +0300] "GET / HTTP/1.0" 200 11192 "-" "check_http/v2.2 (monitoring-plugins 2.2)"
不存在的列将显示为 -
.
列出当前访问日志格式
访问日志格式在中定义 /etc/apache2/apache2.conf
Ubuntu、Debian或 /etc/httpd/httpd.conf
在CentOS或RedHat系统中。我们可以列出当前的指令 LogFormat
使用以下命令。
$ cat /etc/apache2/apache2.conf | grep Log

交互式读取Apache访问日志
系统管理员通常需要以交互方式读取Apache访问日志,以便进行故障排除。我们可以用 tail
命令以便实时查看快速访问日志。我们将使用以下命令。我们假设 access.log
居住在 /var/log/apache2/access.log
$ tail -f /var/log/apache2/access.log