Apache,IIS,NGINX日志记录的各个字段的内容和意义

日志文件是网站记录非常重要的一部分,通过日志我们可以有效的发现网站中的问题,帮助我们分析网站。

1.Apache

下图是我用phpstudy集成环境搭建的网站,日志文件的路径为C:\phpStudy\Apache\logs,可以看到里面有两种日志,分别为access.log(访问日志)和error.log(错误日志)。

        下图是我截取的访问日志中的部分内容,其中各个字段代表含义按顺序如下

  • 远程主机IP:表明访问网站的是谁 
  • 空白(E-mail):为了避免用户的邮箱被垃圾邮件骚扰,第二项就用“-”取代了
  • 空白(登录名):用于记录浏览者进行身份验证时提供的名字。
  • 请求时间:用方括号包围,而且采用“公用日志格式”或者“标准英文格式”。 时间信息最后的“+0800”表示服务器所处时区位于UTC之后的8小时。
  • 方法+资源+协议:服务器收到的是一个什么样的请求。该项信息的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 资源 协议”。

         METHOD: GET、POST、HEAD、……
         RESOURCE: /、index.html、/default/index.php、……(请求的文件)
         PROTOCOL: HTTP+版本号

  • 状态代码:请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常。
  • 发送字节数:表示发送给客户端的总字节数。它告诉我们传输是否被打断(该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。

 

下图为错误日志的截图,其中各个字段的含义按序如下:

1.错误发生的日期和时间

2.错误的级别或严重性

3.导致错误的IP地址

4.错误信息本身。

 

下面是Apache各个级别的错误

emerg 紧急 - 系统无法使用。 "Child cannot open lock file. Exiting"  
alert 必须立即采取措施。 "getpwuid: couldn't determine user name from uid"  
crit 致命情况。 "socket: Failed to get a socket, exiting child"  
error 错误情况。 "Premature end of script headers"  
warn 警告情况。 "child process 1234 did not exit, sending another SIGHUP"  
notice 一般重要情况。 "httpd: caught SIGBUS, attempting to dump core in ..."  
info 普通信息。 "Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)..."  
debug 出错级别信息 "Opening config file ..."  

2.IIS

下图是我们用window server 2018 搭建的网站,可以看到日志文件的路径为 C:\inetpub\logs\LogFiles\W3SVC2,当然我们可以在iis服务管理器中手动指定路径。

 下图为我截取的其中一个日志的部分内容。

其中各字段含义

  • date:请求发出日期各字段含义
  • time:请求发出时间,这两个字段组成资源请求详细时间,该时间通常为服务器端时间,(注意,服务器采用时区可能与本地时区不一致,我们用的是北京时间,实际实际需要在这个基础上加8)
  • s-ip:服务器IP,资源处理服务器IP,通常是服务器本机IP。
  • cs-method:请求方式,常见有GET与POST请求。
  • cs-uri-stem:请求资源路径,网站根目录下的绝对路径位置。
  • cs-uri-query:请求参数。
  • s-port:使用端口,通常HTTP协议端口是80,HTTPS协议端口是443。
  • cs-username:客户端用户名,通常为空或-。
  • c-ip:客户端IP,判断唯一用户的重要依据,也是判断搜索蜘蛛爬虫真伪的依据。
  • cs(User-Agent):用户使用的设备与浏览器类型,以及是否是爬虫蜘蛛程序,但此数据可模拟,需结合上面客户端IP才能准确判断是否是蜘蛛程序。
  • sc-status:请求资源返回状态码,HTTP状态码,通常200为正常,301为跳转,404为资源不存在,500为服务器错误,详细网站HTTP状态码。 
  • sc-substatus:协议子状态,通常为0。
  • sc-win32-status:Win32状态,通常为0。

③上图中没有的字段含义(可能出现在其他日志中)

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

3.NGINX

1.Nginx默认日志存放的路径

 例如phpstudy(windows)在 :phpstudy/Extensions/Nginx/logs;

 wdcp(linux)在 :www/wdlinux/Nginx/logs 。

2.Nginx访问日志默认格式:

    log_format main '$remote_addr - - $remote_user [$time_local] "$request" '

     '$status $body_bytes_sent "$http_referer" '

    '"$http_user_agent"    "$http_x_forwarded_for" ';

  示例:

127.0.0.1 - - [17/Apr/2020:22:55:48 +0800] "GET /wordpress HTTP/1.1" 301 170 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"

1.remote_addr(127.0.0.1):远程主机IP

2.空白(-)Email:为了避免用户的邮箱被垃圾邮件骚扰。

3.空白(-)登录名:用于记录浏览者进行身份验证时提供的名字。

4.remote_user[$time_local]([17/Apr/2020:22:55:48 +0800]):访问时间和日期,用方括号包裹,采用公用日志格式,最后+0800代表服务器所处时区位于URC之后的8个小时。

5."$request"("GET /wordpress HTTP/1.1"):请求方法,资源,协议。

6.body_bytes_sent(170):发送字节数

7.http_referer(-):referer

8.http_user_agent(Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0):也就是HTTP Header中对应的UA,包含浏览器信息,访问者的操作系统,版本等。

NGINX部分源自博客   https://www.cnblogs.com/Zh1z3ven/p/12726151.html

猜你喜欢

转载自www.cnblogs.com/laoxu777/p/12756324.html