[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[Apache] 了解访问日志格式设置

多语言预约系统“EDISONE”示意图

你好。

我是系统解决方案部门的宫崎。

在这篇文章中,我想简单介绍一下apache访问日志的格式。

服务器设置

操作系统版本

[root@Webserver local]# cat /proc/version Linux 版本 4.9.51-10.52.amzn1.x86_64 (mockbuild@gobi-build-64010) (gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC ) ) #1 SMP 2017 年 9 月 29 日星期五 01:16:19 UTC 2017

阿帕奇版本

[root@localhost]# httpd -v 服务器版本:Apache/2.4.27 (Amazon)

apache配置文件写入/etc/httpd/conf/httpd.conf,具体取决于操作系统。

Apache访问日志输出目的地

访问日志的输出目的地由CustomLog决定。

[root@Webserver ~]# less /etc/httpd/conf/httpd.conf CustomLog "logs/access_log" 组合

CustomLog默认是用相对路径写入的。
该相对路径由项目“ServerRoot”的相对路径表示。

“ServerRoot”设置也写入此 httpd.conf 文件中。

[root@Webserver ~]# less /etc/httpd/conf/httpd.conf ServerRoot "/etc/httpd"

也就是说CustomLog的位置是

由于 ServerRoot/logs/access_log
是 /etc/httpd/logs/acces_log。

[root@Webserver ~]# ls -l /etc/httpd/ 总计 12 drwxr-xr-x 2 root root 4096 10 月 27 日 13:36 conf drwxr-xr-x 2 root root 4096 10 月 27 日 13:36 conf.d drwxr -xr-x 2 root root 4096 Oct 27 13:36 conf.modules.d lrwxrwxrwx 1 root root 14 Oct 27 13:36 日志 -> /var/log/httpd lrwxrwxrwx 1 root root 24 Oct 27 13:36 模块 -> /usr/lib64/httpd/modules lrwxrwxrwx 1 root root 14 Oct 27 13:36 run -> /var/run/httpd

/etc/httpd/logs/ 已替换为 /var/log/httpd。
这意味着访问日志将位于/var/log/httpd/access_log。

[root@Webserver ~]# ls -l /var/log/httpd 总计 8 -rw-r--r-- 1 root root 1285 十月 27 13:44 access_log -rw-r--r-- 1 root root 1832 10 月 27 日 15:02 error_log

Apache 访问日志格式

apache访问日志的格式由/etc/httpd/conf/httpd.conf中的LogFormat部分决定。

[root@Webserver ~]# less /etc/httpd/conf/httpd.conf LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \" %{User-Agent}i\"" 组合 LogFormat "%h %l %u %t \"%r\" %>s %b" 通用

关于自定义日志格式的详细信息请查看下面的apache官方文档。
http://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats

LogFormat 的最后一部分表示“组合”或“通用”,称为昵称。

CustomLog中也写入了昵称,即前面介绍的访问日志输出目的地,并且
将具有相同昵称的LogFormat格式输出到访问日志中。

CustomLog“日志/access_log”组合

这个CustomLog有一个昵称组合,所以

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" 组合 LogFormat "%h %l % u %t \"%r\" %>s %b" 常见

以上述LogFormat格式输出访问日志。

事实上,昵称组合格式的访问日志如下所示:

[root@Webserver ~]# less /var/log/httpd/access_log XXX.XXX.XXX.XXX - - [27/Oct/2017:04:44:01 +0000] "GET / HTTP/1.1" 403 4891 " -" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 如 Gecko) Chrome/61.0.3163.100 Safari/537.36"

接下来,我们编辑/etc/httpd/conf/httpd.conf中的CustomLog和LogFormat描述并查看访问日志。

[root@Webserver ~]# vi /etc/httpd/conf/httpd.conf #LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \ "%{User-Agent}i\"" 组合 #LogFormat "%h %l %u %t \"%r\" %>s %b" 通用 LogFormat "%h %l %u %t" 测试 #CustomLog “logs/access_log”结合 CustomLog“logs/access_log”测试

删除LogFormat中的%t后,我们看一下昵称设置为test的访问日志。
输出会是什么?

[root@Webserver ~]# less /var/log/httpd/access_log 200.XXX.XXX.20 - - [27/Oct/2017:05:05:36 +0000]

根据 LogFormat 格式,最多显示 %t“收到请求的时间”。

概括

我研究了 accesslog 的格式,我自己也对此感到好奇。
当我实际编辑httpd.conf,更改显示项目并
检查访问日志时,更容易理解。

就是这样。

如果您觉得这篇文章有帮助,请点赞!
2
加载中...
2 票,平均:1.00 / 12
21,968
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

宫崎健太

我于 2017 年作为应届毕业生加入 Beyond。

我们为主要提供基于网络的服务的公司所使用的服务器和云提供24小时、365天的运营、维护和监控服务。
我属于系统解决方案部门,我的工作是改善 Beyond 的运营,以便我们的客户能够专注于他们的业务。

认证:AWS 认证解决方案架构师、GCP 专业云架构师、Linuc1