Server - Apache - 日志 - 简单调整日志格式

  1. 概述
    1. 尝试调整 apache 的日志模式
  2. 背景
    1. 初学 apache
  3. 环境
    1. 虚拟机 - OS
      1. VirtualBox6.0
      2. CentOS7.2
    2. apache
      1. 2.4.6-90
      2. yum 安装
    3. 宿主机 - OS
      1. Win10
    4. 网络
      1. 虚拟机使用 桥接模式

1. 书上说

  1. 很简单, 使用 组合日志模式

    CustomLog logs/access_log combined

2. 实际

  1. 实际情况
    1. 实际情况, 感觉好像一堆问题
    2. 我啥玩意不懂, 一上来被这句话直接搞懵逼
  2. 配置文件
    1. 首先, 需要明确一个问题
      1. 这个修改, 需要找到 配置文件
    2. 配置文件位置

      /etc/httpd/conf/httpd.conf
    3. 查找参数位置
      1. CustomLog 大概在 191 行左右
        1. 说着说, 在一个叫做 元素里
      2. 参数附近貌似有很多 注释, 我大概来 读一下
        1. 日志格式
          1. 第一组注解, 大概描述了 日志格式
            1. 定义了 三个日志格式, 并且每一个格式 都会有一个 nickname
          2. 第三组需要模块 logio_module
        2. 日志位置
          1. 如果不做其他配置, 日志以 制定 nickname 格式, 放置在 制定路径
          2. 如果在 虚拟服务器 里配置, 则会记录到 虚拟服务器 的路径之中
            1. 并且 默认日志 也不会有 内容
        3. 使用组合日志格式
          1. 联合日志格式, 比 通用日志格式, 内容丰富
    4. 实际情况
      1. 通用格式 被注解了
      2. 联合日志格式 正在被 使用

3. 尝试切换日志格式

  1. 概述
    1. 尝试将 联合日志格式, 切换为 通用日志格式
  2. 步骤
    1. 注释

      CustomLog "logs/access_log" combined
    2. 解开注释

      CustomLog "logs/access_log" common
    3. 重启 apache

      > apachectl graceful
  3. 结果
    1. 重启成功
    2. 访问成功
    3. 日志格式变化

4. 通用日志格式

  1. 配置

    # LogFormat "<format>" <alias>
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
  2. 日志举例

    192.168.2.158 - - [08/Mar/2020:22:27:06 +0800] "GET /hello.html HTTP/1.1" 304 -
  3. 解释
    1. %h - 192.168.2.158
      1. 远程主机名/IP
        1. 默认是 ip
        2. 主机名的话, 需要开启某些设置
          1. 具体支持 略
    2. %l - -
      1. 远程登录名
        1. 需要 mod_ident 支持, 且打开开关
          1. 具体支持略
        2. 否则显示 -
    3. $u - -
      1. 授权用户
        1. 前提: 开启 弱访问控制
          1. 具体操作略 - 我都不会...
    4. %t - [08/Mar/2020:22:27:06 +0800]
      1. 请求时间
        1. 格式暂时是这个格式
        2. 感觉应该是 可以定制 的
    5. "%r" - "GET /hello.html HTTP/1.1"
      1. 转义双引号
        1. 这个 format 本身就是定义在 双引号 里的, 所以必须转移
      2. 请求行内容
        1. request 的第一行
    6. %>s - 304
      1. 返回状态
        1. 这个我就不详细描述了
    7. %b - -
      1. 响应大小(不含头部)
        1. 单位是 bytes
        2. 200 的响应里, 是有大小的
        3. 没有发送数据, 则显示 -
          1. 这个 304 没有大小, 老实说, 我也不知道...
  4. 日志格式说明
    1. Apache Module mod_log_config
      1. 日志的格式, 其实很丰富
      2. 具体的内容, 就可以看官网怎么说了

5. 自定义

  1. 想了想
    1. 自带的格式, 总有不好用的时候
    2. 有了这么个文档, 要不试试自己定制
    3. 就算不好用, 也能改回来
  2. 需求
    1. 收到时间 - %t
    2. 客户端ip - %h
    3. 服务器ip - %A
    4. 服务器端口 - %p
    5. 请求第一行 - %r
    6. 请求处理时间 - %D/%T
    7. 连接状态 - %X
    8. 收到数据大小 - %I
    9. 发送数据大小 - %O
    10. 返回状态
    11. 分隔符的话, 我想用 \t
  3. 格式串

    LogFormat  "%t  %h  %A  %p  \"%r\" %D   %X  %I  %O %>s"  demo
  4. 结果

    # 基本成功
    # 具体的内容, 我就不再去解释了, 请对照官网参数, 自行查看...
    [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

  1. ref
    1. Apache Cookbook
    2. Apache Module mod_log_config
  2. 后续
    1. log 的 rotate, apache 是否有方案
    2. virtualhost 是怎么回事, 这个...
    3. 日志如果是这样的话, 是否会有某些 日志分析工具 之类的玩意, 还是硬靠 awk 和 grep 来处理
    4. 日志应该还是有很多可以研究的东西吧
    5. 配置文件, ifModule 模块, 以及各种声明语句, 老实说, 我是真的不会
    6. apache 出现各种状态码 的条件, 和具体反应
      1. 感觉是个 大工程, 随缘做吧

猜你喜欢

转载自www.cnblogs.com/xy14/p/12445866.html