apache 配置 accesslog 日志 格式 问题.docx

上传人:b****3 文档编号:2890482 上传时间:2022-11-16 格式:DOCX 页数:8 大小:23.16KB
下载 相关 举报
apache 配置 accesslog 日志 格式 问题.docx_第1页
第1页 / 共8页
apache 配置 accesslog 日志 格式 问题.docx_第2页
第2页 / 共8页
apache 配置 accesslog 日志 格式 问题.docx_第3页
第3页 / 共8页
apache 配置 accesslog 日志 格式 问题.docx_第4页
第4页 / 共8页
apache 配置 accesslog 日志 格式 问题.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

apache 配置 accesslog 日志 格式 问题.docx

《apache 配置 accesslog 日志 格式 问题.docx》由会员分享,可在线阅读,更多相关《apache 配置 accesslog 日志 格式 问题.docx(8页珍藏版)》请在冰豆网上搜索。

apache 配置 accesslog 日志 格式 问题.docx

apache配置accesslog日志格式问题

apache 配置 access_log 日志 格式 问题 

要有效地管理Web服务器,就有必要反馈服务器的活动、性能以及出现的问题。

ApacheHTTP服务器提供了非常全面而灵活的日志记录功能。

本文将阐述如何配置文件以及如何理解日志内容。

安全警告

任何人只要对Apache存放日志文件的目录具有写权限,也就当然地可以获得启动Apache的用户(通常是root)的权限,绝对不要随意给予任何人存放日志文件目录的写权限。

细节请参见安全方面的提示。

另外,日志文件可能会包含未加转换的来自用户的信息,用户就有机会恶意插入控制符,所以处理原始日志时应该当心这个问题。

错误日志(ErrorLog)

相关模块

相关指令

∙ErrorLog

∙LogLevel

错误日志是最重要的日志文件,其文件名和位置取决于ErrorLog指令。

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

错误日志通常被写入一个文件(unix系统上一般是error_log,Windows和OS/2上一般是error.log)。

在unix系统中,错误日志还可能被重定向到syslog或通过管道操作传递给一个程序。

错误日志的格式相对灵活,并可以附加文字描述。

某些信息会出现在绝大多数记录中,一个典型的例子是:

[WedOct1114:

32:

522000][error][client127.0.0.1]clientdeniedbyserverconfiguration:

/export/home/live/ap/htdocs/test

其中,第一项是错误发生的日期和时间;第二项是错误的严重性,LogLevel指令使只有高于指定严重性级别的错误才会被记录;第三项是导致错误的IP地址;此后是信息本身,在此例中,服务器拒绝了这个客户的访问。

服务器在记录被访问文件时,用的是文件系统路径,而不是Web路径。

错误日志中会包含类似上述例子的多种类型的信息。

此外,CGI脚本中任何输出到stderr的信息会作为调试信息原封不动地记录到错误日志中。

用户可以增加或删除错误日志的项。

但是对某些特殊请求,在访问日志(accesslog)中也会有相应的记录,比如上述例子在访问日志中也会有相应的记录,其状态码是403,因为访问日志也可以定制,所以可以从访问日志中得到错误事件的更多信息。

在测试中,对任何问题持续监视错误日志是非常有用的。

在unix系统中,可以这样做:

tail-ferror_log

访问日志(AccessLog)

相关模块

相关指令

∙mod_log_config

∙mod_setenvif

∙CustomLog

∙LogFormat

∙SetEnvIf

访问日志中会记录服务器所处理的所有请求,其文件名和位置取决于CustomLog指令,LogFormat指令可以简化日志的内容。

这里阐述如何配置服务器的访问日志。

实施日志管理,首先当然必须产生访问日志,然后才能分析日志从而得到有用的统计信息。

日志分析不是Web服务器的职责,已超出本文的范畴,更多资料和有关分析工具的信息,可以查看OpenDirectory或Yahoo。

不同版本的Apachehttpd使用了不同的模块和指令来控制对访问的记录,包括mod_log_referer,mod_log_agent和TransferLog指令。

现在,CustomLog指令包含了旧版本中相关指令的所有功能。

访问日志的格式是高度灵活的,使用很象C风格的printf()函数的格式字符串。

下面有几个例子,完整的说明可以查看用于mod_log_config模块的格式字符串。

通用日志格式(CommonLogFormat)

这是一个典型的记录格式:

LogFormat"%h%l%u%t\"%r\"%>s%b"common

CustomLoglogs/access_logcommon

它定义了一种特定的记录格式字符串,并给它起了个别名叫common,其中的"%"指示服务器用某种信息替换,其他字符则不作替换。

引号(")必须加反斜杠转义,以避免被解释为字符串的结束。

格式字符串还可以包含特殊的控制符,如换行符"\n"、制表符"\t"。

CustomLog指令建立一个使用指定别名的新日志文件,除非其文件名是以斜杠开头的绝对路径,否则其路径就是相对于ServerRoot的相对路径。

上述配置是一种被称为通用日志格式(CLF)的记录格式,它被许多不同的Web服务器所采用,并被许多日志分析程序所识别,它产生的记录形如:

127.0.0.1-frank[10/Oct/2000:

13:

55:

36-0700]"GET/apache_pb.gifHTTP/1.0"2002326

记录的各部分说明如下:

127.0.0.1(%h)

这是发送请求到服务器的客户的IP地址。

如果HostnameLookups设为On,则服务器会尝试解析这个IP地址的主机名并替换此处的IP地址,但并不推荐这样做,因为它会显著拖慢服务器,最好是用一个日志后续处理器来判断主机名,比如logresolve。

如果客户和服务器之间存在代理,那么记录中的这个IP地址就是那个代理的IP地址,而不是客户机的真实IP地址。

-(%l)

这是由客户端identd进程判断的RFC1413身份(identity),输出中的符号"-"表示此处的信息无效。

除非在严格控制的内部网络中,此信息通常很不可靠,不应该被使用。

只有在将IdentityCheck指令设为On时,Apache才会试图得到这项信息。

frank(%u)

这是HTTP认证系统得到的访问该网页的客户标识(userid),环境变量REMOTE_USER会被设为该值并提供给CGI脚本。

如果状态码是401,表示客户未通过认证,则此值没有意义。

如果网页没有设置密码保护,则此项将是"-"。

[10/Oct/2000:

13:

55:

36-0700](%t)

这是服务器完成请求处理时的时间,其格式是:

[日/月/年:

时:

分:

秒时区]

日=2数字

月=3字母

年=4数字

时=2数字

分=2数字

秒=2数字

时区=(+|-)4数字

可以在格式字符串中使用%{format}t来改变时间的输出形式,其中的format与C标准库中的strftime()用法相同。

"GET/apache_pb.gifHTTP/1.0"(\"%r\")

引号中是客户端发出的包含许多有用信息的请求行。

可以看出,该客户的动作是GET,请求的资源是/apache_pb.gif,使用的协议是HTTP/1.0。

另外,还可以记录其他信息,如:

格式字符串"%m%U%q%H"会记录动作、路径、查询字符串、协议,其输出和"%r"一样。

200(%>s)

这是服务器返回给客户端的状态码。

这个信息非常有价值,因为它指示了请求的结果,或者是被成功响应了(以2开头),或者被重定向了(以3开头),或者出错了(以4开头),或者产生了服务器端错误(以5开头)。

完整的状态码列表参见HTTP规范(RFC2616第10章)。

2326(%b)

最后这项是返回给客户端的不包括响应头的字节数。

如果没有信息返回,则此项应该是"-",如果希望记录为"0"的形式,就应该用%B。

组合日志格式(CombinedLogFormat)

另一种常用的记录格式是组合日志格式,形式如下:

LogFormat"%h%l%u%t\"%r\"%>s%b\"%{Referer}i\"\"%{User-agent}i\""combined

CustomLoglog/access_logcombined

这种格式与通用日志格式类似,但是多了两个%{header}i项,其中的header可以是任何请求头。

这种格式的记录形如:

127.0.0.1-frank[10/Oct/2000:

13:

55:

36-0700]"GET/apache_pb.gifHTTP/1.0"2002326""Mozilla/4.08[en](Win98;I;Nav)"

其中,多出来的项是:

"(\"%{Referer}i\")

"Referer"请求头。

此项指明了该请求是被从哪个网页提交过来的,这个网页应该包含有/apache_pb.gif或者其连接。

"Mozilla/4.08[en](Win98;I;Nav)"(\"%{User-agent}i\")

"User-Agent"请求头。

此项是客户端提供的浏览器识别信息。

多文件访问日志

可以简单地在配置文件中用多个CustomLog指令来建立多文件访问日志。

如下例,既记录基本的CLF信息,又记录提交网页和浏览器的信息,最后两行CustomLog示范了如何模拟ReferLog和AgentLog指令的效果。

LogFormat"%h%l%u%t\"%r\"%>s%b"common

CustomLoglogs/access_logcommon

CustomLoglogs/referer_log"%{Referer}i->%U"

CustomLoglogs/agent_log"%{User-agent}i"

此例也说明了,记录格式可以直接由CustomLog指定,而并不一定要用LogFormat起一个别名。

条件日志

许多时候,根据与请求特征相关的环境变量来有选择地记录某些客户端请求会带来便利。

首先,需要使用SetEnvIf指令来设置特定的环境变量以标识符合某种特定条件的请求,然后用CustomLog指令的env=子句,根据这些环境变量来决定记录或排除特定的请求。

例如:

#不记录本机发出的请求

SetEnvIfRemote_Addr"127\.0\.0\.1"dontlog

#不记录对robots.txt文件的请求

SetEnvIfRequest_URI"^/robots\.txt$"dontlog

#记录其他请求

CustomLoglogs/access_logcommonenv=!

dontlog

再如,将使用英语的请求记录到一个日志,而记录非英语的请求到另一个日志:

SetEnvIfAccept-Language"en"english

CustomLoglogs/english_logcommonenv=english

CustomLoglogs/non_english_logcommonenv=!

english

虽然上述已经展示了条件日志记录的强大和灵活,但这不是控制日志内容的唯一手段,还可以用日志后继处理程序来剔除你不关心的内容,从而使日志更加有用。

日志滚动

即使一个并不繁忙的服务器,其日志文件的信息量也会很大,一般每10000个请求,访问日志就会增加1MB或更多。

这就有必要定期滚动日志文件。

由于Apache会保持日志文件的打开,并持续写入信息,因此服务器运行期间不能执行滚动操作。

移动或者删除日志文件以后,必须重新启动服务器才能让它打开新的日志文件。

用优雅的(graceful)方法重新启动,可以使服务器启用新的日志

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1