错误日志和访问日志一样也是Apache的标准日志。本文分析错误日志宜伯压乐卫的内容,介绍如何设置和曲蒸对燃错误日志相关的选项360问答,文档错误和CGI错误的分类,以及如何方便地查看日志内容,等等。一、位置和内容 错误日志无论在格式上还是在内容林述各罗水响则上都和访问日志不同。然而,错误日志和访问日志一样也提供丰富的信息,我们可以利用这些信息分析服务器的运行情况、哪里出现了问题。 错误日志的文件名字是err境天结调照态亚打注盟美or_log,但如果是Windows平台,则错误日志的文件名字是***.log。错误日志的位置可以通过ErrorLog指令设置:ErrorLoglogs界就销初路/***.log 除非文件位置用尼台州黑言井知“/”开头,否则这个文件位置是相对于ServerRoot目录的相对路径。如果Apache采用默认安装方式安装,那么错误日志的位置应该在/usr/local/apache/logs下。但是,如果Apache用某种包管理器提创式安装,错误日志很可能在其他位置。 正如其名字所示,错误日志记录了服务器运行期间遇到的各种错误,以及一些普通的诊断信息,比如服务器何时启动、何时关闭等。微半热承老齐将写氢 我们可以设置日志文件记调敌源录信息级别的高低,控制日志文件记录信息的数量和类型。这是通过LogLevel指令设置的,该指令默认设置的级均必机业别是error,即记录称得上错误的事件。有关该指令中允许设置的各种选项的完整清单,请参见#loglevel的Apache文档举。 大多数情况下,我们在日志文件中见到的内容分奏将弱前么律查属两类:文档错误和CGI错误。但是,错误日志中偶尔也会出现配置错误,另外还有前面提到的服务器启动和关闭信息。二、文档错误 文档错误和服务器应答中的400系列代码相对应,最常见的就是404错误——DocumentNotFound(文档没有找到)。除了404错误以外,用户身份验证错误也是一种常见的错误。 404错误在用户请求的资源(即URL)不存在时出现,它可能是由于用户输入的林URL错误,或者由于服务器上原来存在的文档因故被删除或移动。 顺便说一下,按照JakobNielso若己n的意见,在不提供重定向或者其系皇负委著犯整他补救措施的情况下,我们永远不应该移动或者删除Web网站的任何资源。Nielson的文章,请参见:authenticationfailurefor"/cgi-bin/hirecareers/***.cgi":passwordmismatch 注意,由于文档错误是用户请求的直接结果,因此它们在访果等盟依获夜层北导集量问日志中也会有相应息混的记录。三、CGI错误 错误日志最主要的用途或许是诊断行为异常的CGI程序。为了进一步分析和处理方便,CGI程序输出到STDERR(StandardError,标准错误设备)的所有内容都将直接进入错误日志。这意味着,任何编写良好的CGI程序,如果出现了问题,错误日志就会告诉我们有关问题的详细信息。 然而,把CGI程序错误输出到错误日志也有它的缺点,错误日志中将出现许多没有标准格式的内容,这使得用错误日志自动分析程序从中分析出有用的信息变得相当困难。 下面是一个例子,它是调试PerlCGI代码时,错误日志中出现的一个错误记录:[WedJun1416:16:372000][error][client192.168.1.3]Prematureendofscriptheaders:/usr/local/apache/cgi-bin/HyperCalPro/***.cgiglobalsymbol"$rv"requiresexplicitpackagenameat/usr/local/apache/cgi-bin/HyperCalPro/announcement.***.globalsymbol"%details"requiresexplicitpackagenameat/usr/local/apache/cgi-bin/HyperCalPro/announcement.***.globalsymbol"$Config"requiresexplicitpackagenameat/usr/local/apache/cgi-bin/HyperCalPro/announcement.***.executionof/usr/local/apache/cgi-bin/HyperCalPro/***.cgiabortedduetocompilationerrors. 可以看到,CGI错误和前面的404错误格式相同,包含日期/时间、错误级别以及客户地址、错误信息。但这个CGI错误的错误信息有好几行,这往往会干扰一些错误日志分析软件的工作。 有了这个错误信息,即使是对Perl不太熟悉的人也能够找出许多有关错误的信息,例如至少可以方便地得知是哪几行代码出现了问题。Perl在报告程序错误方面的机制是相当完善的。当然,不同的编程语言输出到错误日志的信息会有所不同。 由于CGI程序运行环境的特殊性,如果没有错误日志的帮助,大多数CGI程序的错误都将很难解决。 有不少人在邮件列表或者新闻组中抱怨说自己有一个CGI程序,当打开网页时服务器却返回错误,比如“InternalServerError”。我们可以肯定,这些人还没有看过服务器的错误日志,或者根本不知道错误日志的存在。决多大多数情况下,错误日志能够精确地指出CGI错误的所在以及如何修正这个错误。四、查看日志文件 我常常告诉别人说,在进行开发的同时我会不断地检查服务器的日志,以便能够立即知道哪儿出了问题。但我得到的回答却往往是沉默。起先我以为这种沉默意味着“你当然得这样做”,后来我才发现这种沉默的真正含义是“我不知道别人的做法,但我自己是不干的。” 虽然如此,下面我们还是要看看如何方便地查看服务器日志文件。用telnet连接到服务器,然后输入下面的命令:tail-f/usr/local/apache/logs/error_log 该命令将显示出日志文件的最后几行内容,如果有新的内容加入到日志文件,它还会立即显示出新加入的内容。 Windows用户也同样可以使用这种方法,比如可以使用各种为Windows提供的Unix工具软件包。我个人爱好一个称为AINTX的工具,它可以在index.htm找到。 还有一种替代方法是使用下面的Perl代码,它利用了一个称为File::Tail的模块:useFile::Tail;$file=File::Tail->new("/some/log/file");while(defined($line=$file->read)){print"$line";} 无论具体采用的是哪一种方法,同时打开多个终端窗口都是一种好习惯:比如在一个窗口中显示错误日志,在另一个窗口中显示访问日志。这样,我们就能够随时获知网站上发生的事情并立即予以解决。转载
特别声明
本文仅代表作者观点,不代表本站立场,本站仅提供信息存储服务。