Server - Apache - 日志 - 简单调整日志格式
-
概述
- 尝试调整 apache 的日志模式
-
背景
- 初学 apache
-
环境
- 虚拟机 - OS
- VirtualBox6.0
- CentOS7.2
- apache
- 2.4.6-90
- yum 安装
- 宿主机 - OS
- Win10
- 网络
- 虚拟机使用 桥接模式
- 虚拟机 - OS
1. 书上说
-
很简单, 使用 组合日志模式
CustomLog logs/access_log combined
2. 实际
-
实际情况
- 实际情况, 感觉好像一堆问题
- 我啥玩意不懂, 一上来被这句话直接搞懵逼
-
配置文件
-
首先, 需要明确一个问题
- 这个修改, 需要找到 配置文件
-
配置文件位置
/etc/httpd/conf/httpd.conf
-
查找参数位置
-
CustomLog 大概在 191 行左右
- 说着说, 在一个叫做
元素里
- 说着说, 在一个叫做
-
参数附近貌似有很多 注释, 我大概来 读一下
-
日志格式
- 第一组注解, 大概描述了 日志格式
- 定义了 三个日志格式, 并且每一个格式 都会有一个 nickname
- 第三组需要模块 logio_module
- 第一组注解, 大概描述了 日志格式
-
日志位置
- 如果不做其他配置, 日志以 制定 nickname 格式, 放置在 制定路径
- 如果在 虚拟服务器 里配置, 则会记录到 虚拟服务器 的路径之中
- 并且 默认日志 也不会有 内容
-
使用组合日志格式
- 联合日志格式, 比 通用日志格式, 内容丰富
-
-
-
实际情况
- 通用格式 被注解了
- 联合日志格式 正在被 使用
-
3. 尝试切换日志格式
-
概述
- 尝试将 联合日志格式, 切换为 通用日志格式
-
步骤
-
注释
CustomLog "logs/access_log" combined
-
解开注释
CustomLog "logs/access_log" common
-
重启 apache
> apachectl graceful
-
-
结果
- 重启成功
- 访问成功
- 日志格式变化
4. 通用日志格式
-
配置
# LogFormat "<format>" <alias> LogFormat "%h %l %u %t \"%r\" %>s %b" common
-
日志举例
192.168.2.158 - - [08/Mar/2020:22:27:06 +0800] "GET /hello.html HTTP/1.1" 304 -
-
解释
-
%h - 192.168.2.158
- 远程主机名/IP
- 默认是 ip
- 主机名的话, 需要开启某些设置
- 具体支持 略
- 远程主机名/IP
-
%l - -
- 远程登录名
- 需要 mod_ident 支持, 且打开开关
- 具体支持略
- 否则显示 -
- 需要 mod_ident 支持, 且打开开关
- 远程登录名
-
$u - -
- 授权用户
- 前提: 开启 弱访问控制
- 具体操作略 - 我都不会...
- 前提: 开启 弱访问控制
- 授权用户
-
%t - [08/Mar/2020:22:27:06 +0800]
- 请求时间
- 格式暂时是这个格式
- 感觉应该是 可以定制 的
- 请求时间
-
"%r" - "GET /hello.html HTTP/1.1"
- 转义双引号
- 这个 format 本身就是定义在 双引号 里的, 所以必须转移
- 请求行内容
- request 的第一行
- 转义双引号
-
%>s - 304
- 返回状态
- 这个我就不详细描述了
- 返回状态
-
%b - -
- 响应大小(不含头部)
- 单位是 bytes
- 200 的响应里, 是有大小的
- 没有发送数据, 则显示 -
- 这个 304 没有大小, 老实说, 我也不知道...
- 响应大小(不含头部)
-
-
日志格式说明
- Apache Module mod_log_config
- 日志的格式, 其实很丰富
- 具体的内容, 就可以看官网怎么说了
- Apache Module mod_log_config
5. 自定义
-
想了想
- 自带的格式, 总有不好用的时候
- 有了这么个文档, 要不试试自己定制
- 就算不好用, 也能改回来
-
需求
- 收到时间 - %t
- 客户端ip - %h
- 服务器ip - %A
- 服务器端口 - %p
- 请求第一行 - %r
- 请求处理时间 - %D/%T
- 连接状态 - %X
- 收到数据大小 - %I
- 发送数据大小 - %O
- 返回状态
- 分隔符的话, 我想用 \t
-
格式串
LogFormat "%t %h %A %p \"%r\" %D %X %I %O %>s" demo
-
结果
# 基本成功 # 具体的内容, 我就不再去解释了, 请对照官网参数, 自行查看... [08/Mar/2020:23:04:16 +0800] 192.168.2.158 192.168.2.6 80 "GET /hello.html HTTP/1.1" 133 + 630 177 304
ps
-
ref
- Apache Cookbook
- Apache Module mod_log_config
-
后续
- log 的 rotate, apache 是否有方案
- virtualhost 是怎么回事, 这个...
- 日志如果是这样的话, 是否会有某些 日志分析工具 之类的玩意, 还是硬靠 awk 和 grep 来处理
- 日志应该还是有很多可以研究的东西吧
- 配置文件, ifModule 模块, 以及各种声明语句, 老实说, 我是真的不会
- apache 出现各种状态码 的条件, 和具体反应
- 感觉是个 大工程, 随缘做吧
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出