apache日志格式定义及示例说明[通俗易懂]

apache日志格式定义及示例说明[通俗易懂]来源:https://blog.csdn.net/newhappy2008/article/details/7604956有时候我们需要定制Apache默认日志的格式和内容,比如增加或减少日志所记录的信息、改变默认日志文件的格式等。本文介绍可以用日志记录的所有信息,以及如何设置Apache使其记录这些信息。一、Apache日志格式定义  很久以前,日志文件只有一种格式,这就是“公共…

大家好,又见面了,我是你们的朋友全栈君。

来源:https://blog.csdn.net/newhappy2008/article/details/7604956

有时候我们需要定制Apache默认日志的格式和内容,比如增加或减少日志所记录的信息、改变默认日志文件的格式等。本文介绍可以用日志记录的所有信息,以及如何设置Apache使其记录这些信息。

一、Apache日志格式定义

  
很久以前,日志文件只有一种格式,这就是“公共格式”,许多人已经习惯于使用这种格式。随后出现了定制日志格式,而且看起来定制日志格式更很受欢迎,即使 公共日志格式本身也重新用定制日志格式定义。本文介绍的就是如何随心所欲地定制日志文件的格式、如何让日志文件记录自己想要的信息。

定制日志文件的格式涉及到两个指令,即LogFormat指令和CustomLog指令,默认httpd.conf文件提供了关于这两个指令的几个示例。

LogFormat指令定义格式并为格式指定一个名字,以后我们就可以直接引用这个名字。CustomLog指令设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。

LogFormat指令的功能是定义日志格式并为它指定一个名字。例如,在默认的httpd.conf文件中,我们可以找到下面这行代码:

LogFormat “%h %l %u %t \”%r\” %>s %b” common

该指令创建了一种名为“common”的日志格式,日志的格式在双引号包围的内容中指定。格式字符串中的每一个变量代表着一项特定的信息,这些信息按照格式串规定的次序写入到日志文件。
Apache文档已经给出了所有可用于格式串的变量及其含义,下面是其译文:
%…a: 远程IP地址
%…A: 本地IP地址
%…B: 已发送的字节数,不包含HTTP头
%…b: CLF格式的已发送字节数量,不包含HTTP头。例如当没有发送数据时,写入‘-’而不是0。
%…{FOOBAR}e: 环境变量FOOBAR的内容
%…f: 文件名字
%…h: 远程主机
%…H 请求的协议
%…{Foobar}i: Foobar的内容,发送给服务器的请求的标头行。
%…l: 远程登录名字(来自identd,如提供的话)
%…m 请求的方法
%…{Foobar}n: 来自另外一个模块的注解“Foobar”的内容
%…{Foobar}o: Foobar的内容,应答的标头行
%…p: 服务器响应请求时使用的端口
%…P: 响应请求的子进程ID。
%…q 查询字符串(如果存在查询字符串,则包含“?”后面的部分;否则,它是一个空字符串。)
%…r: 请求的第一行
%…s: 状态。对于进行内部重定向的请求,这是指*原来*请求 的状态。如果用%…>s,则是指后来的请求。
%…t: 以公共日志时间格式表示的时间(或称为标准英文格式)
%…{format}t: 以指定格式format表示的时间
%…T: 为响应请求而耗费的时间,以秒计
%…u: 远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的)
%…U: 用户所请求的URL路径
%…v: 响应请求的服务器的ServerName
%…V: 依照UseCanonicalName设置得到的服务器名字

在所有上面列出的变量中,“…”表示一个可选的条件。如果没有指定条件,则变量的值将以“-”取代。分析前面来自默认httpd.conf文件的 LogFormat指令示例,可以看出它创建了一种名为“common”的日志格式,其中包括:远程主机,远程登录名字,远程用户,请求时间,请求的第一 行代码,请求状态,以及发送的字节数。

有时候我们只想在日志中记录某些特定的、已定义的信息,这时就要用到“…”。如果在“%”和变量之间放入了一个或者多个HTTP状态代码,则只有当请 求返回的状态代码属于指定的状态代码之一时,变量所代表的内容才会被记录。例如,如果我们想要记录的是网站的所有无效链接,那么可以使用:

LogFormat %404{Referer}i BrokenLinks

反之,如果我们想要记录那些状态代码不等于指定值的请求,只需加入一个“!”符号即可。

二、Apache日志格式说明

在访问日志中记录了很多的客户信息,如果你有心,可以从这个日志中获得很多有用的信息!

正如其名字所示,访问日志access_log记录了所有对Web服务器的访问活动。下面是访问日志中一个典型的记录:

10.1.1.95 – e800 [18/Mar/2005:12:21:42 +0800] “GET /stats/awstats.pl?config=e800 HTTP/1.1” 200 899 “http://10.1.1.1/pv/” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)”

这行内容由9项构成,上面的例子中有两项空白,但整行内容仍旧分成了9项。

第一项信息是远程主机的地址。如果你想知道这个IP地址的域名,可通过nslookup或者host命令来查看。如果你想让Apache自己找出这个IP 的主机名,可以打开这个开关:HostnameLookups。(建议最好不要打开,会影响Apache记录服务器日志的速度)

第二项是空白,用一个”-“占位符替代。实际上绝大多数时候这一项都是如此。这个位置用于记录浏览者的标识,这不只是浏览者的登录名字,而是浏览者的 email地址或者其他唯一标识符。这个信息由identd返回,或者直接由浏览器返回。很早的时候,那时Netscape 0.9还占据着统治地位,这个位置往往记录着浏览者的email地址。然而,由于有人用它来收集邮件地址和发送垃圾邮件,所以它未能保留多久,很久之前市 场上几乎所有的浏览器就取消了这项功能。因此,到了今天,我们在日志记录的第二项看到email地址的机会已经微乎其微了。

第三项也是e800。这个位置用于记录浏览者进行身份验证时提供的名字。当然,如果网站的某些内容要求用户进行身份验证,那么这项信息是不会空白的。但是,对于大多数网站来说,日志文件的大多数记录中这一项仍旧是空白的。

第四项是请求的时间。这个信息用方括号包围,而且采用所谓的”公共日志格式”或”标准英文格式”。因此,上例日志记录表示请求的时间是2005年3月18日12:21:42。时间信息最后的”+0800″表示服务器所处时区位于UTC之后的8小时。

第五项信息或许是整个日志记录中最有用的信息,它告诉我们服务器收到的是一个什么样的请求。该项信息的典型格式是”METHOD RESOURCE PROTOCOL”,即”方法 资源 协议”。
RESOURCE是指浏览者向服务器请求的文档,或URL。在这个例子中,浏览者请求的是”/stats/awstats.pl?config=e800 “。
在上例中,METHOD是GET,其他经常可能出现的METHOD还有POST和HEAD。此外还有不少可能出现的合法METHOD,但主要就是这三种。
PROTOCOL通常是HTTP,后面再加上版本号。

第六项信息是状态代码。它告诉我们请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的 请求,一切正常。一般地说,以2开头的状态代码表示成功,以3开头的状态代码表示由于各种不同的原因用户请求被重定向到了其他位置,以4开头的状态代码表 示客户端存在某种错误,以5开头的状态代码表示服务器遇到了某个错误。

第七项表示发送给客户端的总字节数。它告诉我们传输是否被打断(即,该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。

第八项记录的是客户在提出请求时所在的目录或URL。这次的是”http://10.1.1.1/pv/”即10.1.1.1的pv目录下的首页。大多数情况下,首页会是在httpd.conf中DocumentRoot 指令后面规定的那些类型和名字的web文件。

第九项表示客户端的详细信息,这样你就不难理解为什么有些网站能够在页面中显示你的IP、OS、Browser了。

引用

错误日志的设置
ErrorLog logs/error_log #日志的保存位置
LogLevel warn #日志的级别

显示的格式日下:
[Mon Oct 10 15:54:29 2005] [error] [client 192.168.10.22] access to /download/ failed, reason: user admin not allowed access

访问日志设置

日志的缺省格式有如下几种
LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
LogFormat “%h %l %u %t “%r” %>s %b” common #common为日志格式名称
LogFormat “%{Referer}i -> %U” referer
LogFormat “%{User-agent}i” agent
CustomLog logs/access_log common

格式中的各个参数如下:
%h –客户端的ip地址或主机名
%l –The 这是由客户端 identd 判断的RFC 1413身份,输出中的符号 “-” 表示此处信息无效。
%u –由HTTP认证系统得到的访问该网页的客户名。有认证时才有效,输出中的符号 “-” 表示此处信息无效。
%t –服务器完成对请求的处理时的时间。
“%r” –引号中是客户发出的包含了许多有用信息的请求内容。
%>s –这个是服务器返回给客户端的状态码。
%b –最后这项是返回给客户端的不包括响应头的字节数。
“%{Referer}i” –此项指明了该请求是从被哪个网页提交过来的。
“%{User-Agent}i” –此项是客户浏览器提供的浏览器识别信息。

下面是一段访问日志的实例:
192.168.10.22 – bearzhang [10/Oct/2005:16:53:06 +0800] “GET /download/ HTTP/1.1″ 200 1228
192.168.10.22 – – [10/Oct/2005:16:53:06 +0800] “GET /icons/blank.gif HTTP/1.1″ 304 –
192.168.10.22 – – [10/Oct/2005:16:53:06 +0800] “GET /icons/back.gif HTTP/1.1″ 304 –
——————— 
作者:newhappy2008 
来源:CSDN 
原文:https://blog.csdn.net/newhappy2008/article/details/7604956 
版权声明:本文为博主原创文章,转载请附上博文链接!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143739.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java爬虫系列一:写在开始前[通俗易懂]

    最近在研究Java爬虫,小有收获,打算一边学一边跟大家分享下,在干货开始前想先跟大家啰嗦几句。一、首先说下为什么要研究Java爬虫Python已经火了很久了,它功能强大,其中很擅长的一个就是写爬虫

  • 振荡周期、时钟周期、机器周期、指令周期的区别与联系[通俗易懂]

    振荡周期、时钟周期、机器周期、指令周期的区别与联系[通俗易懂]以下内容均来自网上查找,并根据个人理解进行整理,刚开始学习单片机,如有不对的地方敬请指正。先给出结论:一个振荡周期=一个时钟周期;一个时钟周期=一个机器周期;一个机器周期=六个状态周期;一个状态周期=两个节拍;一个节拍=一个时钟周期;一个指令周期=N个机器周期;综上:1个指令周期=N个机器周期=6N个状态周期=12N个节拍=12N个时钟周期=12N个振荡周期时钟周期:一个脉冲所需…

    2022年10月13日
  • origin/HEAD -> origin/master 这个分支是干嘛的啊

    origin/HEAD -> origin/master 这个分支是干嘛的啊

    2021年10月22日
  • vant时间控件的使用「建议收藏」

    vant时间控件的使用「建议收藏」<template><divclass=”shoukuan”><!–头部公共搜索框–><tabbartitle=”添加团队活动”></tabbar><divclass=”con”><van-cell-group><van-fi…

  • 教你画出业务架构图「建议收藏」

    教你画出业务架构图「建议收藏」1、什么是业务架构图?业务架构图是一种表达业务层级和关系的工具,业务架构服务于业务目标,通过描绘业务上下层关系,梳理一整套完整、简单的业务视图,降低业务系统的复杂度,提高客户理解度,最终给客户最直观的业务体现。2、业务架构图的三大核心要义简单来说可以分为三个核心步骤:分层、分模块、分功能。架构图核心要义之一:分层指的是将业务按照层级区分,每个层级都属于独立的版块。下层更抽象,上层更具体。层级需要有逻辑上的关联,比如下层为上层服务,或者提供能力支撑。架构图核心要义之二:分模块分

    2022年10月12日
  • webstorm 2020.3 格式化代码快捷键

    webstorm 2020.3 格式化代码快捷键1、在webstorm2020.3里查看格式化代码快捷键2、点击菜单栏【File】——>【Settings】3、在左上角的搜索栏中输入【keyMap】,在右边的搜索框中输入【format】,出现下面框架中,【Reformat】的快捷键【ctrl+alt+L】或者【ctrl+shift+f】4、我这只有ctrl+alt+L这个快捷键起作用图一:图二:(代码格式乱)图三:(选中代码用快捷键ctrl+alt+L格式化代码后)…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号