美文网首页
Apache日志配置初探

Apache日志配置初探

作者: 无涯老人 | 来源:发表于2019-08-02 11:43 被阅读0次

Apache服务器在现在来看还是一个应用很广的服务器,在我们的项目组中,生产服务器就是配的Apache服务器,而Apache服务器的日志对国人看起来并不是很友好,故花时间了解了一下Apache服务器日志,希望对于以后的数据追踪能够提供帮助。
conf\httpd.conf中,找到CustomLog位置,我们对日志文件的配置,主要在于此处。

日志文件

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    
    CustomLog "logs/access_log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "logs/access_log" combined
</IfModule>

在这里,定义了commoncombined两种日志记录格式,很明显的,combined中使用了%{User-Agent}打点了用户的访问的浏览器,这在很多情况下有用。用common打出来的access_log日志内容如下

127.0.0.1 - - [01/Aug/2019:17:55:02 +0800] "GET / HTTP/1.1" 200 45

而采用combined打印出来的日志格式:

127.0.0.1 - - [02/Aug/2019:09:34:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"

日志文件可以有多份,根据需求打点,如

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
CustomLog logs/referer_log "%{Referer}i -> %U"
CustomLog logs/agent_log "%{User-agent}i"

日志格式说明

参照 http://httpd.apache.org/docs/current/logs.html 对其中的日志格式都是进行了说明
%h代表host
%t代表时间,时间格式是: [day/month/year:hour:minute:second zone]
%>s代表状态吗
%r代表请求,包括类型和路径,其中路径可以包含该query但是不包含POST的请求参数
更多日志格式相关参数参考:
http://httpd.apache.org/docs/current/mod/mod_log_config.html#customlog
一个很重要的问题在于定制日志日期格式,而在这里需要参考 strftime, https://linux.die.net/man/3/strftime
输出一个日期格式为2019-08-02 11:39:40这样格式的配置为:

LogFormat "%h %l %u %{%Y-%m-%d %T}t \"%r\" %>s %b" common

日志拆分方案

日志文件的大小增长随着请求的增加而快速增长,而大文件的写入会越来越慢,故日志的拆分是很有必要,较好的方案是根据时间进行日志拆分
参考: http://httpd.apache.org/docs/current/programs/rotatelogs.html
使用rotatelogs实现,如:每24小时进行日志拆分(86400s为24小时)

CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common

如果在拆分后要带日期格式,如:

CustomLog "|bin/rotatelogs -l /var/log/logfile.%Y.%m.%d 86400" common 

相关文章

网友评论

      本文标题:Apache日志配置初探

      本文链接:https://www.haomeiwen.com/subject/xttldctx.html