apache访问日志目录以及术语返回码
Windows: <Apache安装目录>\logs\access.log | error.log
Linux: /usr/local/apache/logs/access_log | error_log
apache的好处 是 可以自己定制日志,定制的方法和定制的内容,如下:
参考链接:https://blog.csdn.net/weixin_33836223/article/details/91676238
定制日志文件的格式涉及到两个指令,即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”的日志格式,其中包括:远程主机,远程登录名字,远程用户,请求时间,请求的第一行代码,请求状态,以及发送的字节数。 LogFormat "%V %h %l %u %t \"%r\" %>s %b" common
【补充】"<"和">"修饰符可以用来指定对于已被内部重定向的请求是选择原始的请求还是选择最终的请求。默认情况下,%s, %U, %T, %D, %r 使用原始请求,而所有其他格式串则选择最终请求。例如,%>s 可以用于记录请求的最终状态,而 %<u 则记录一个已经被内部重定向到非认证资源的请求的原始认证用户。
如果在“%”和变量之间放入了一个或者多个HTTP状态代码,则只有当请求返回的状态代码属于指定的状态代码之一时,变量所代表的内容才会被记录。例如,如果我们想要记录的是网站的所有无效链接,那么可以使用:
LogFormat %404{Referer}i BrokenLinks
反之,如果我们想要记录那些状态代码不等于指定值的请求,只需加入一个“!”符号即可:
LogFormat %!200U SomethingWrong
至于如何修改 apache的日志,也很简单只需修改apache的配置文件文件就可以了。
术语返回码
返回码
"100" : Continue 客户必须继续发出请求
"101" : witching Protocols 客户要求服务器根据请求转换HTTP协议版本 200交易成功
"200" : OK 交易成功
"201" : Created 提示知道新文件的URL
"202" : Accepted 接受和处理、但处理未完成
"203" : Non-Authoritative Information 返回信息不确定或不完整
"204" : No Content 请求收到,但返回信息为空
"205" : Reset Content 服务器完成了请求,用户代理必须复位当前已经浏览过的文件
"206" : Partial Content 服务器已经完成了部分用户的GET请求
"300" : Multiple Choices 请求的资源可在多处得到
"301" : Moved permanently 删除请求数据
"302" : Found 在其他地址发现了请求数据
"303" : See Other 建议客户访问其他URL或访问方式
"304" : Not Modified 客户端已经执行了GET,但文件未变化
"305" : Use Proxy 请求的资源必须从服务器指定的地址得到
"306" 前一版本HTTP中使用的代码,现行版本中不再使用
"307" : Temporary Redirect 申明请求的资源临时性删除
"400" : Bad Request 错误请求,如语法错误
"401" : Unauthorized 请求授权失败
"402" : Payment Required 保留有效ChargeTo头响应
"403" : Forbidden 请求不答应
"404" : Not Found 没有发现文件、查询或URl
"405" : Method Not Allowed 用户在Request-Line字段定义的方法不答应
"406" : Not Acceptable 根据用户发送的Accept拖,请求资源不可访问
"407" : Proxy Authentication Required 类似401,用户必须首先在代理服务器上得到授权
"408" : Request Time-out 客户端没有在用户指定的饿时间内完成请求
"409" : Conflict 对当前资源状态,请求不能完成
"410" : Gone 服务器上不再有此资源且无进一步的参考地址
"411" : Length Required 服务器拒绝用户定义的Content-Length属性请求
"412" : precondition Failed 一个或多个请求头字段在当前请求中错误
"413" : Request Entity Too Large 请求的资源大于服务器答应的大小
"414" : Request-URI Too Large 请求的资源URL长于服务器答应的长度
"415" : unsupported Media Type 请求资源不支持请求项目格式
"416" : Requested range not satisfiable请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
"417" : Expectation Failed 服务器不满足请求Expect头字段指定的期望值,假如是代理服务器,
"500" : Internal Server Error 服务器产生内部错误
"501" : Not Implemented 服务器不支持请求的函数
"502" : Bad Gateway 服务器暂时不可用,有时是为了防止发生系统过载
"503" : Service Unavailable 服务器过载或暂停维修
"504" : Gateway Time-out 关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
"505" : HTTP Version not supported 服务器不支持或拒绝支请求头中指定的HTTP版本