Apache、Nginx、IIs日志记录的各个字段内容与含义

一、Apache

  1.文件名称及路径

  当我们安装并启动Apache后,Apache会自动生成两个日志文件,这两个日志文件分别是:

  访问日志access.log(在Linux中为access_log)

  错误日志error.log(在Linux中为error_log)

  Windows中的日志文件,保存在apache/logs的目录下,实际情况中当然会放在不同的文件夹下(如下图我放在了phpStudy下),可以根据Apache的配置文件去查找日志文件所在的路径。

  如果有使用 SSL 服务的话,还可能存在 ssl_access_logssl_error_logssl_request_log 三种日志文件。下图是我的03虚拟机的文件夹:

  日志记录也有等级,包括八个级别。
      1 级:英文名称emerg ,出现紧急情况使得该系统不可用,如系统宕机等
      2 级:alert 英文名称,需要立即引起注意的情况
      3 级:英文名称crit ,危险情况的警告
      4 级:英文名称error ,除了emerg 、alert、crit 的其他错误
      5 级:英文名称 warn。 警告信息
      6 级:英文名称 notice ,需要引起注意的情况,但不如error、warn 重要
      7 级:英文名称 info ,值得报告的一般消息
      8 级:英文名称 debug, 由运行于debug 模式的程序所产生的消息

  2.访问日志的字段解析:

  下图是我自己截取的一个字段,标明的数字的位置,对应下面字段的含义:

 

   字段的含义我们拆分来看:

  <1>.远程主机IP:表明访问网站的是谁 

  <2>.空白(E-mail):为了避免用户的邮箱被垃圾邮件骚扰,第二项就用"-"取代了

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

  <4>.请求时间:用方括号包围,而且采用"公用日志格式"或者"标准英文格式"。 时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。

  <5>.方法+资源+协议:服务器收到的是一个什么样的请求。该项信息的典型格式是"METHOD RESOURCE PROTOCOL",即"方法 资源 协议"。

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

  <6>.状态代码:请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常。

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

  第六条是状态代码,大多数时候它的值是200,但是我上面的截图是3xx,这代表着重定向,因为我所截的这部分日志,是我做Pikachu的URL重定向实验时的日志,下图的其他部分日志我们可以看到都是200:

   200的含义,就是访问成功,那么还有以下状态代码可以了解一下:

  2xx:成功

  3xx:重定向

  4xx:访问错误,一般为客户端问题

  5xx:访问错误,一般为服务器问题

  细致分析会发现有特别多的状态码,可以去参考下列网址细致了解:

  https://blog.csdn.net/origination_star/article/details/54341293

·  

  2.错误日志字段解析

  错误日志是最重要的日志文件,其文件名和位置取决于ErrorLog指令。Apache httpd将在这个文件中存放诊断信息和处理请求中出现的错误,由于这里经常包含了出错细节以及如何解决,如果服务器启动或运行中有问题,首先就应该查看这个错误日志。

  错误日志的格式相对灵活,并可以附加文字描述。错误日志中会包含多种类型的信息。访问日志也可以定制,所以可以从访问日志中得到错误事件的更多信息。在测试中,对任何问题持续监视错误日志是非常有用的。

  这里还是看一下我自己的错误日志:

  

  我们还是分开来看看:

  第一项是错误发生的日期和时间;

  第二项是错误的严重性,LogLevel指令使只有高于指定严重性级别的错误才会被记录;

  第三项是导致错误的IP地址;

  第四项是信息本身,在这个里面我们能够看到错误的原因,用户可以增加或删除错误日志的项。但是对某些特殊请求,在访问日志(access log)中也会有相应的记录,比如上述例子在访问日志中也会有相应的记录,其状态码是404,如下图所示(只要找对应的时间即可),至于错误编码的内容,上文已述:

    

二、Nginx

  1.文件名称及路径:

  与Apache差不多,nginx的log日志分为access log error log,其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息;error log 则是记录服务器错误日志。  

  如果你安装了nginx,在Linux下运行下列命令你可以查看和更改日志的存放位置,Linux中的访问日志access.log和错误日志error.log,都在/var/log/nginx目录下:

  vim /usr/local/nginx/conf/nginx.conf

  nginx.conf的内容分为以下几段

    main配置段:全局配置段。其中main配置段中可能包含event配置段;

    event{}:定义event模型工作特性;

    http{}:定义http协议相关配置。

  下面截取了网上资料里面的一个参数明细表以供参考(链接为:https://www.cnblogs.com/crazylqy/p/6891991.html):

  

  2.日志分析

   我们截取一段日志(因为本人没有成功安装nginx,所以还是截取一下别人的日志):

    1:客户端(用户)的IP地址( 10.1.1.1 )

    2:客户端的用户名,匿名访问为-

    3:访问时间([22/Aug/2014:16:48:19 +0800)

    4:请求方式以及请求的资源URI地址(上例中的 /....)

    5:状态码(200)

    6:请求的页面大小(图中的367和616)

    7:来源页面,即从哪个页面转到本页("_")

    8:浏览器信息,操作系统信息(Linux; U; Android 4.1.1; ARMM7K Build/JRO03H)

    9:获取到IP,获取不到则显示为 -(最后面的ip)

三、IIS

  1.文件名称及路径

  如果你成功安装了IIS,那么你在开始菜单的管理工具中就能够找到IIS这个选项,打开它,然后右击想要查看日志的网站,点击属性,就出现下面的对话框:

   然后点击下方的属性按钮,日志的目录就能看到了:

   之后去对应的路径下找即可:

  2.日志分析

  下面是一段日志:

    #Software: Microsoft Internet Information Services 6.0
    #Version: 1.0
    #Date: 2020-04-12 14:10:38
    #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-12 14:10:38 W3SVC24892081 192.168.11.3 GET /Default.asp |110|80004005|操作必须使用一个可更新的查询。 8008 - 192.168.11.3 Mozilla/5.0+(Windows+NT+5.2;+rv:17.0)+Gecko/20100101+Firefox/17.0 500 0 0
    2020-04-12 14:10:38 W3SVC24892081 192.168.11.3 GET /favicon.ico - 8008 - 192.168.11.3 Mozilla/5.0+(Windows+NT+5.2;+rv:17.0)+Gecko/20100101+Firefox/17.0 404 0 2

  我们还是一样,分开来看一下字段的含义:

    1. date: 发出请求时候的日期。
    2. time: 发出请求时候的时间。注意:默认情况下这个时间是格林威治时间,比我们的北京时间晚8个小时。
    3. s-sitename:服务名,记录当记录事件运行于客户端上的Internet服务的名称和实例的编号。
    4. s-ip:服务器的IP地址。
    5. cs-method:请求中使用的HTTP方法,GET/POST。
    6. cs-uri-stem:URI资源,记录做为操作目标的统一资源标识符(URI),即访问的页面文件。
    7. cs-uri-query:URI查询,记录客户尝试执行的查询,只有动态页面需要URI查询,如果有则记录,没有则以连接符-表示。即访问网址的附带参数。
    8. s-port:为服务配置的服务器端口号。
    9. cs-username:用户名,访问服务器的已经过验证用户的名称,匿名用户用连接符-表示。c-ip:客户端IP地址。
    10. cs(User-Agent):用户代理,客户端浏览器、操作系统等情况。
    11. sc-status:协议状态,记录HTTP状态代码,200表示成功,403表示没有权限,404表示找不到该页面。
    12. sc-substatus:协议子状态,记录HTTP子状态代码
    13. sc-win32-status:Win32状态,记录Windows状态代码。
    14. sc-bytes:服务器发送的字节数。
    15. cs-bytes:服务器接受的字节数。
    16. time-taken:记录操作所花费的时间,单位是毫秒。
原文地址:https://www.cnblogs.com/FHBBS/p/12745101.html