




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
apache配置access_log日志格式问题要有效地管理Web服务器,就有必要反馈服务器的活动、性能以及出现的问题。Apache HTTP服务器提供了非常全面而灵活的日志记录功能。本文将阐述如何配置文件以及如何理解日志内容。安全警告任何人只要对Apache存放日志文件的目录具有写权限,也就当然地可以获得启动Apache的用户(通常是root)的权限,绝对不要随意给予任何人存放日志文件目录的写权限。细节请参见安全方面的提示。另外,日志文件可能会包含未加转换的来自用户的信息,用户就有机会恶意插入控制符,所以处理原始日志时应该当心这个问题。错误日志(Error Log)相关模块相关指令 ErrorLog LogLevel错误日志是最重要的日志文件,其文件名和位置取决于ErrorLog指令。Apache httpd将在这个文件中存放诊断信息和处理请求中出现的错误,由于这里经常包含了出错细节以及如何解决,如果服务器启动或运行中有问题,首先就应该查看这个错误日志。错误日志通常被写入一个文件(unix系统上一般是error_log ,Windows和OS/2上一般是error.log)。在unix系统中,错误日志还可能被重定向到syslog或通过管道操作传递给一个程序。错误日志的格式相对灵活,并可以附加文字描述。某些信息会出现在绝大多数记录中,一个典型的例子是:Wed Oct 11 14:32:52 2000 error client client denied by server configuration: /export/home/live/ap/htdocs/test 其中,第一项是错误发生的日期和时间;第二项是错误的严重性,LogLevel指令使只有高于指定严重性级别的错误才会被记录;第三项是导致错误的IP地址;此后是信息本身,在此例中,服务器拒绝了这个客户的访问。服务器在记录被访问文件时,用的是文件系统路径,而不是Web路径。错误日志中会包含类似上述例子的多种类型的信息。此外,CGI脚本中任何输出到stderr的信息会作为调试信息原封不动地记录到错误日志中。用户可以增加或删除错误日志的项。但是对某些特殊请求,在访问日志(access log)中也会有相应的记录,比如上述例子在访问日志中也会有相应的记录,其状态码是403,因为访问日志也可以定制,所以可以从访问日志中得到错误事件的更多信息。在测试中,对任何问题持续监视错误日志是非常有用的。在unix系统中,可以这样做:tail -f error_log 访问日志(Access Log)相关模块相关指令 mod_log_config mod_setenvif CustomLog LogFormat SetEnvIf访问日志中会记录服务器所处理的所有请求,其文件名和位置取决于CustomLog指令,LogFormat指令可以简化日志的内容。这里阐述如何配置服务器的访问日志。实施日志管理,首先当然必须产生访问日志,然后才能分析日志从而得到有用的统计信息。日志分析不是Web服务器的职责,已超出本文的范畴,更多资料和有关分析工具的信息,可以查看Open Directory或Yahoo 。不同版本的Apache httpd使用了不同的模块和指令来控制对访问的记录,包括mod_log_referer, mod_log_agent和TransferLog指令。现在,CustomLog指令包含了旧版本中相关指令的所有功能。访问日志的格式是高度灵活的,使用很象C风格的printf()函数的格式字符串。下面有几个例子,完整的说明可以查看用于mod_log_config模块的格式字符串。通用日志格式(Common Log Format)这是一个典型的记录格式:LogFormat %h %l %u %t %r %s %b commonCustomLog logs/access_log common 它定义了一种特定的记录格式字符串,并给它起了个别名叫common ,其中的%指示服务器用某种信息替换,其他字符则不作替换。引号()必须加反斜杠转义,以避免被解释为字符串的结束。格式字符串还可以包含特殊的控制符,如换行符n 、制表符t。CustomLog指令建立一个使用指定别名的新日志文件,除非其文件名是以斜杠开头的绝对路径,否则其路径就是相对于ServerRoot的相对路径。上述配置是一种被称为通用日志格式(CLF)的记录格式,它被许多不同的Web服务器所采用,并被许多日志分析程序所识别,它产生的记录形如: - frank 10/Oct/2000:13:55:36 -0700 GET /apache_pb.gif HTTP/1.0 200 2326 记录的各部分说明如下: (%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数字 可以在格式字符串中使用 %formatt 来改变时间的输出形式,其中的format与C标准库中的strftime()用法相同。 GET /apache_pb.gif HTTP/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 。 组合日志格式(Combined Log Format)另一种常用的记录格式是组合日志格式,形式如下:LogFormat %h %l %u %t %r %s %b %Refereri %User-agenti combinedCustomLog log/access_log combined 这种格式与通用日志格式类似,但是多了两个 %headeri 项,其中的header可以是任何请求头。这种格式的记录形如: - frank 10/Oct/2000:13:55:36 -0700 GET /apache_pb.gif HTTP/1.0 200 2326 /start.html Mozilla/4.08 en (Win98; I ;Nav) 其中,多出来的项是:/start.html (%Refereri) Referer请求头。此项指明了该请求是被从哪个网页提交过来的,这个网页应该包含有/apache_pb.gif或者其连接。 Mozilla/4.08 en (Win98; I ;Nav) (%User-agenti) User-Agent请求头。此项是客户端提供的浏览器识别信息。 多文件访问日志可以简单地在配置文件中用多个CustomLog指令来建立多文件访问日志。如下例,既记录基本的CLF信息,又记录提交网页和浏览器的信息,最后两行CustomLog示范了如何模拟ReferLog和AgentLog指令的效果。LogFormat %h %l %u %t %r %s %b commonCustomLog logs/access_log commonCustomLog logs/referer_log %Refereri - %UCustomLog logs/agent_log %User-agenti 此例也说明了,记录格式可以直接由CustomLog指定,而并不一定要用LogFormat起一个别名。条件日志许多时候,根据与请求特征相关的环境变量来有选择地记录某些客户端请求会带来便利。首先,需要使用SetEnvIf指令来设置特定的环境变量以标识符合某种特定条件的请求,然后用CustomLog指令的 env= 子句,根据这些环境变量来决定记录或排除特定的请求。例如:# 不记录本机发出的请求SetEnvIf Remote_Addr dontlog# 不记录对robots.txt文件的请求SetEnvIf Request_URI /robots.txt$ dontlog# 记录其他请求CustomLog logs/access_log common env=!dontlog 再如,将使用英语的请求记录到一个日志,而记录非英语的请求到另一个日志:SetEnvIf Accept-Language en englishCustomLog logs/english_log common env=englishCustomLog logs/non_english_log common env=!english 虽然上述已经展示了条件日志记录的强大和灵活,但这不是控制日志内容的唯一手段,还可以用日志后继处理程序来剔除你不关心的内容,从而使日志更加有用。日志滚动即使一个并不繁忙的服务器,其日志文件的信息量也会很大,一般每10000个请求,访问日志就会增加1MB或更多。这就有必要定期滚动日志文件。由于Apache会保持日志文件的打开,并持续写入信息,因此服务器运行期间不能执行滚动操作。移动或者删除日志文件以后,必须重新启动服务器才能让它打开新的日志文件。用优雅的(graceful)方法重新启动,可以使服务器启用新的日志文件,而不丢失原来尚未写入的信息。为此,有必要等待一段时间,让服务器完成正在处理的请求,并将记录写入到原来的日志文件。以下是一个典型的日志滚动和为节省存储空间而压缩旧日志的例子:mv access_log access_log.oldmv error_log error_log.oldapachectl gracefulsleep 600gzip access_log.old error_log.old 另一种执行滚动的方法是使用下一节阐述的管道日志。管道日志Apache httpd可以通过管道将访问记录和出错信息传递给另一个进程,而不是写入一个文件,由于无须对主服务器进行编程,这个功能显著地增强了日志的灵活性。只要用管道操作符|后面跟一个可执行文件名,就可以使这个程序从标准输入设备获得事件记录。Apache在启动时,会同时启动这个管道日志进程,并且在运行过程中,如果这个进程崩溃了,会重新启动这个进程(所以我们称这个技术为可靠管道日志)。管道日志进程由其父进程Apache httpd产生,并继承其权限,这意味着管道进程通常是作为root运行的,所以保持这个程序简单而安全极为重要。管道日志的一种重要用途是,允许日志滚动而无须重新启动服务器。为此,服务器提供了一个简单的程序rotatelogs 。每24小时滚动一次日志的例子如下:CustomLog |/usr/local/apache/bin/rotatelogs /var/log/access_log 86400 common 注意:引号用于界定整个管道命令行。虽然这是针对访问日志的,但是其用法对于其他日志也一样。在其他站点,有一个类似但更灵活的日志滚动程序叫cronolog 。如果有较简单的离线处理日志的方案,就不应该使用条件日志和管道日志,即使它们非常强大。虚拟主机如果服务器配有若干虚拟主机,那么还有几个控制日志文件的功能。首先,可以把日志指令放在段之外,让它们与主服务器使用同一个访问日志和错误日志来记录所有的请求和错误,但是这样就不能方便的获得每个虚拟主机的信息了。如果把CustomLog或ErrorLog指令放在段内,所有对这个虚拟主机的请求和错误信息会被记录在其私有的日志文件中,那些没有在段内使用日志指令的虚拟主机将仍然和主服务器使用同一个日志。这种方法对虚拟主机较少的服务器很有用,但虚拟主机非常多时,就会带来管理上的困难,还经常会产生文件描述符短缺的问题。对于访问日志,有一个很好的折衷方案,在同一个访问日志文件中记录对所有主机的访问,而每条记录都注明虚拟主机的信息,日后再把记录拆开存入不同的文件。例如:LogFormat %v %l %u %t %r %s %b comonvhostCustomLog logs/access_log comonvhost %v 用来附加虚拟主机的信息。有个split-logfile程序可以根据不同的虚拟主机信息对日志进行拆分,并将结果存入不同的文件。其他日志文件相关模块相关指令 mod_logio mod_log_forensic mod_cgi mod_rewrite LogFormat ForensicLog PidFile RewriteLog RewriteLogLevel ScriptLog Scrip
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025阳泉市市属国有企业招聘53人笔试参考题库附带答案详解
- 2025辽宁能源集团所属铁法能源公司招聘63人笔试参考题库附带答案详解
- 2025福建龙岩上杭县文化旅游发展有限公司所属企业招聘16人笔试参考题库附带答案详解
- 2025浙江慈溪市诚安燃气服务有限公司招聘10人笔试参考题库附带答案详解
- 2025江苏宜宸产业投资有限公司招聘2人笔试参考题库附带答案详解
- 2025广东省汕特建设集团有限公司招聘专业技术人才4人笔试参考题库附带答案详解
- 2025年国网甘肃省电力公司高校毕业生提前批招聘动态笔试参考题库附带答案详解
- 2025年合肥热电集团春季招聘30人笔试参考题库附带答案详解
- 2025四川内江汉江教育管理有限公司招聘2人笔试参考题库附带答案详解
- 2025中国葛洲坝集团易普力股份有限公司禹州分公司招聘22人(河南)笔试参考题库附带答案详解
- GB/T 23902-2021无损检测超声检测超声衍射声时技术检测和评价方法
- 邀请函模板完整
- 2020新译林版高中英语选择性必修二全册课文及翻译(英汉对照)
- 大学物理第14章光的衍射课件
- 家长会 课件(共44张ppt) 九年级上学期
- 钻孔灌注桩施工安全控制培训教材课件
- 福建省莆田市各县区乡镇行政村村庄村名明细
- 大班幼儿随访电访记录表内有内容
- 干细胞精品课件
- 太阳能路灯说明书完整版
- 中国老龄化社会的潜藏价值(中英)
评论
0/150
提交评论