• Nginx、lls、Apache三种服务器的日志格式及其字段含义


    1、Nginx日志格式及各字段含义

    1.1 Nginx日志存放位置

      在linux上,nginx的访问日志默认放在nginx的安装目录下的logs文件夹中,具体的位置可以查找nginx的配置文件nginx.conf查看

    1.2 Nginx日志的格式

    183.198.255.73 - - [16/Apr/2020:21:46:26 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36"

    1.3 Nginx日志的字段含义

    (1)183.198.255.73:代表着客户端的ip

    (2)- -:日志中默认设置即为 - -

    (3)[16/Apr/2020:21:46:26 +0800]:服务器完成请求处理的时间,格式:[日/月/年:时:分:秒 时区]

    (4)GET / HTTP/1.1:请求方式/请求资源,协议GET / HTTP/1.1

    (5)200:协议状态码

    (6)612:服务器向客户端发送的字节数612

    (7)-:记录从哪个页面链接访问来的(非页面访问则为-)

    (8)Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36:客户浏览器信息(UA)

    1.4 Nginx参数含义

     (1)$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;
     (2)$remote_user :用来记录客户端用户名称;
     (3)$time_local : 用来记录访问时间与时区;
     (4)$request : 用来记录请求的url与http协议;
     (5)$status : 用来记录请求状态;成功是200,
     (6)$body_bytes_s ent :记录发送给客户端文件主体内容大小;
     (7)$http_referer :用来记录从那个页面链接访问过来的;
     (8)$http_user_agent :记录客户端浏览器的相关信息;

    2、lls的日志格式及各字段含义

    2.1 lls日志存放位置

      默认情况下,lls的日志存放在C:WINDOWSsystem32LogFiles

     2.2 lls日志的字段含义

    #Software: Microsoft Internet Information Services 6.0
    #Version: 1.0
    #Date: 2020-04-10 07:18:44
    #Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status
    2020-04-10 07:18:44 W3SVC219663584 192.168.1.2 GET /default.asp - 8003 - 192.168.1.2 Mozilla/5.0+(Windows+NT+5.2;+rv:52.0)+Gecko/20100101+Firefox/52.0 200 0 0

    (1)#Software、#Version、#Date分别是服务器程序、版本、时间

    (2)#Fields为日志内容各字段说明

    (3)date:日期2020-04-10

    (4)time:时间07:18:44

    (5)s-sitename:服务器站点名称,用于区分同一服务器下的多个站点。W3SVC219663584

    (6)s-ip:服务器ip,资源处理服务器ip,通常为服务器本机ip

    (7)cs-method:请求方式GET

    (8)cs-uri-stem:请求资源路径。 /default.asp 

    (9)cs-uri-query:访问的查询字符串,如果没有则是-

    (10) s-port:端口号8003

    (11) cs-username: 对于通过身份验证的用户,格式是“域用户名”;对于匿名用户,是一个连字符 (-)。

    (12)c-ip:客户端ip 192.168.1.2(自己访问自己)

    (13)cs(User-Agent):浏览器信息 Mozilla/5.0+(Windows+NT+5.2;+rv:52.0)+Gecko/20100101+Firefox/52

    (14) sc-status:状态码

    (15)sc-substatus:HTTP子协议的状态 0

    (16)sc-win32-status :Win32® 状态

    当然还存在一些其他的字段:

    • time-taken:花费时间,单位为毫秒。
    • cs-version:协议版本。
    • cs(Referer):请求来路,从哪个页面点击链接进入的该资源。通常如果存在该字段,可判断出搜索引擎与搜索词。
    • sc-bytes:发送文件的大小,单位为字节。一般为所请求资源文件的大小。
    • s-sitename:服务器站点名称,用于区分同一服务器下的多个站点。
    • s-computername:服务器计算机名称。
    • cs(Cookie):客户端请求Cookie。
    • cs-host:客户端请求主机名。

    3、Apache日志格式及各字段含义

    3.1 Apache日志存放位置

      如果Apache的安装方式是默认安装,服务器一运行就会有两个日志文件生成。这两个文件是access_log(在Windows上是 access.log)和error_log(在Windows上是error.log)。采用默认安装方式时,这些文件可以在/usr/local /apache/logs下找到;对于Windows系统,这些日志文件将保存在Apache安装目录的logs子目录。

    3.2 Apache日志各字段含义

     与IIS服务器格式略有不同,Apache服务器日志记录通常不包含字段说明。 默认情况下单条记录(一行)通常分为5部分。分别是:请求IP与时间、请求方式与内容、请求状态与大小、请求资源来路、请求代理字符串。

    (1)请求IP与时间: 106.11.156.101 - - [27/Feb/2019:08:04:21 +0800] 请求客户端IP地址与时间,此时间记录包含时区标识,中间两个 - 分别为访问者的标识与身份验证,通常为空以-代替。

    (2)请求方式与内容: GET /373.html HTTP/1.1 请求方式与请求资源绝对路径,之后为请求协议类型。

    (3)请求状态与大小:200 4656 请求资源返回HTTP状态码与发送文件大小(字节)。

    (4)请求资源来路: http://www.example.com/ 请求资源来路或资源引用来路。

    (5)请求代理字符串: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 YisouSpider/5.0 Safari/537.36 用户代理字符串。

    3.3 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。

    %e: 环境变量FOOBAR的内容

    %…f: 文件名字

    %…h: 远程主机

    %…H 请求的协议

    %i: Foobar的内容,发送给服务器的请求的标头行。

    %…l: 远程登录名字(来自identd,如提供的话)

    %…m 请求的方法

    %n: 来自另外一个模块的注解“Foobar”的内容

    %o: Foobar的内容,应答的标头行

    %…p: 服务器响应请求时使用的端口

    %…P: 响应请求的子进程ID。

    %…q 查询字符串(如果存在查询字符串,则包含“?”后面的

    部分;否则,它是一个空字符串。)

    %…r: 请求的第一行

    %…s: 状态。对于进行内部重定向的请求,这是指*原来*请求

    的状态。如果用%…>s,则是指后来的请求。

    %…t: 以公共日志时间格式表示的时间(或称为标准英文格式)

    %t: 以指定格式format表示的时间

    %…T: 为响应请求而耗费的时间,以秒计

    %…u: 远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的)

    %…U: 用户所请求的URL路径

    %…v: 响应请求的服务器的ServerName

    %…V: 依照UseCanonicalName设置得到的服务器名字

    ——————————————————————

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

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

    —————————————————-

    LogFormat %404{Referer}i BrokenLinks

    —————————————————

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

    LogFormat %!200U SomethingWrong

  • 相关阅读:
    电子工程师的血泪史
    最简单的bootloader的编写步骤
    6811汇编语言
    Tiny6410SHT10温湿度传感器
    Tiny6410裸机程序
    无线收发模块NRF24LU1和NRF24LE1
    转载工作10年的人总结的6句话
    Tiny6410取模软件设置
    别人的感悟
    在Windows下用Virtualbox虚拟linux时共享文件夹设置的方法
  • 原文地址:https://www.cnblogs.com/pangsong/p/12733132.html
Copyright © 2020-2023  润新知