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:\WINDOWS\system32\LogFiles

 

 

 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

posted @ 2020-04-19 19:52  pangsong666  阅读(1495)  评论(0编辑  收藏  举报