`
kolenxiao
  • 浏览: 36114 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Apache错误日志详解

阅读更多

错误日志和访问日志一样也是Apache的标准日志。本文分析错误日志的内容,介绍如何设置和错误日志相关的选项,文档错误和CGI错误的分类,以及如何方便地查看日志内容,等等。
  一、位置和内容
  前文讨论了Apache的访问日志,包括它的内容、格式和如何设置访问日志有关的选项。本文我们要讨论的是另外一种Apache标准日志――错误日志。
  错误日志无论在格式上还是在内容上都和访问日志不同。然而,错误日志和访问日志一样也提供丰富的信息,我们可以利用这些信息分析服务器的运行情况、哪里出现了问题。
  错误日志的文件名字是error_log,但如果是Windows平台,则错误日志的文件名字是error.log。错误日志的位置可以通过ErrorLog指令设置:
  ErrorLog logs/error.log
  除非文件位置用“/”开头,否则这个文件位置是相对于ServerRoot目录的相对路径。如果Apache采用默认安装方式安装,那么错误日志的位置应该在/usr/local/apache/logs下。但是,如果Apache用某种包管理器安装,错误日志很可能在其他位置。
  正如其名字所示,错误日志记录了服务器运行期间遇到的各种错误,以及一些普通的诊断信息,比如服务器何时启动、何时关闭等。
  我们可以设置日志文件记录信息级别的高低,控制日志文件记录信息的数量和类型。这是通过LogLevel指令设置的,该指令默认设置的级别是error,即记录称得上错误的事件。有关该指令中允许设置的各种选项的完整清单,请参见http://www.apache.org/docs/mod/core.html#loglevel的Apache文档。
  大多数情况下,我们在日志文件中见到的内容分属两类:文档错误和CGI错误。但是,错误日志中偶尔也会出现配置错误,另外还有前面提到的服务器启动和关闭信息。
  二、文档错误
  文档错误和服务器应答中的400系列代码相对应,最常见的就是404错误――Document Not Found(文档没有找到)。除了404错误以外,用户身份验证错误也是一种常见的错误。
  404错误在用户请求的资源(即URL)不存在时出现,它可能是由于用户输入的URL错误,或者由于服务器上原来存在的文档因故被删除或移动。
  顺便说一下,按照Jakob Nielson的意见,在不提供重定向或者其他补救措施的情况下,我们永远不应该移动或者删除Web网站的任何资源。Nielson的更多文章,请参见http://www.zdnet.com/devhead/alertbox/。
  当用户不能打开服务器上的文档时,错误日志中出现的记录如下所示:
  [Fri Aug 18 22:36:26 2000] [error]
  [client 192.168.1.6] File does not exist:
  /usr/local/apache/bugletdocs/Img/south-korea.gif
  可以看到,正如访问日志access_log文件一样,错误日志记录也分成多个项。
  错误记录的开头是日期/时间标记,注意它们的格式和access_log中日期/时间的格式不同。access_log中的格式被称为“标准英文格式”,这或许是历史跟我们开的一个玩笑,但现在要改变它已经太迟了。
  错误记录的第二项是当前记录的级别,它表明了问题的严重程度。这个级别信息可能是LogLevel指令的文档中所列出的任一级别(参见前面LogLevel的链接),error级别处于warn级别和crit级别之间。404属于error错误级别,这个级别表示确实遇到了问题,但服务器还可以运行。
  错误记录的第三项表示用户发出请求时所用的IP地址。
  记录的最后一项才是真正的错误信息。对于404错误,它还给出了完整路径指示客户端试图访问的文件。当我们料想某个文件应该在目标位置却出现了404错误时,这个信息是非常有用的。此时产生这种错误的原因往往是由于服务器配置错误、文件实际所处的虚拟主机和我们料想的不同,或者其他一些意料不到的情况。
  由于用户身份验证问题而出现的错误记录如下所示:
  [Tue Apr 11 22:13:21 2000]
  [error] [client 192.168.1.3] user rbowen@rcbowen.
  com: authentication failure for "/cgi-bin/hirecareers/company.cgi":
  password mismatch
  注意,由于文档错误是用户请求的直接结果,因此它们在访问日志中也会有相应的记录。
  三、CGI错误
  错误日志最主要的用途或许是诊断行为异常的CGI程序。为了进一步分析和处理方便,CGI程序输出到STDERR(Standard Error,标准错误设备)的所有内容都将直接进入错误日志。这意味着,任何编写良好的CGI程序,如果出现了问题,错误日志就会告诉我们有关问题的详细信息。
  然而,把CGI程序错误输出到错误日志也有它的缺点,错误日志中将出现许多没有标准格式的内容,这使得用错误日志自动分析程序从中分析出有用的信息变得相当困难。
  下面是一个例子,它是调试Perl CGI代码时,错误日志中出现的一个错误记录:
  [Wed Jun 14 16:16:37 2000] [error] [client 192.168.1.3] Premature
  end of script headers: /usr/local/apache/cgi-bin/HyperCalPro/announcement.cgi
  Global symbol "$rv" requires explicit package name at
  /usr/local/apache/cgi-bin/HyperCalPro/announcement.cgi line 81.
  Global symbol "%details" requires explicit package name at
  /usr/local/apache/cgi-bin/HyperCalPro/announcement.cgi line 84.
  Global symbol "$Config" requires explicit package name at
  /usr/local/apache/cgi-bin/HyperCalPro/announcement.cgi line 133.
  Execution of /usr/local/apache/cgi-bin/HyperCalPro/announcement.cgi
  aborted due to compilation errors.
  可以看到,CGI错误和前面的404错误格式相同,包含日期/时间、错误级别以及客户地址、错误信息。但这个CGI错误的错误信息有好几行,这往往会干扰一些错误日志分析软件的工作。
  有了这个错误信息,即使是对Perl不太熟悉的人也能够找出许多有关错误的信息,例如至少可以方便地得知是哪几行代码出现了问题。Perl在报告程序错误方面的机制是相当完善的。当然,不同的编程语言输出到错误日志的信息会有所不同。
  由于CGI程序运行环境的特殊性,如果没有错误日志的帮助,大多数CGI程序的错误都将很难解决。
  有不少人在邮件列表或者新闻组中抱怨说自己有一个CGI程序,当打开网页时服务器却返回错误,比如“Internal Server Error”。我们可以肯定,这些人还没有看过服务器的错误日志,或者根本不知道错误日志的存在。决多大多数情况下,错误日志能够精确地指出CGI错误的所在以及如何修正这个错误。
  四、查看日志文件
  我常常告诉别人说,在进行开发的同时我会不断地检查服务器的日志,以便能够立即知道哪儿出了问题。但我得到的回答却往往是沉默。起先我以为这种沉默意味着“你当然得这样做”,后来我才发现这种沉默的真正含义是“我不知道别人的做法,但我自己是不干的。”
  虽然如此,下面我们还是要看看如何方便地查看服务器日志文件。用telnet连接到服务器,然后输入下面的命令:
  tail -f /usr/local/apache/logs/error_log
  该命令将显示出日志文件的最后几行内容,如果有新的内容加入到日志文件,它还会立即显示出新加入的内容。
  Windows用户也同样可以使用这种方法,比如可以使用各种为Windows提供的Unix工具软件包。我个人爱好一个称为AINTX的工具,它可以在http://maxx.mc.net/~jlh/nttools/index.htm找到。
  还有一种替代方法是使用下面的Perl代码,它利用了一个称为File::Tail的模块:
  use File::Tail;
  $file=File::Tail-new("/some/log/file");
  while (defined($line=$file-read)) {
  print "$line";
  }
  无论具体采用的是哪一种方法,同时打开多个终端窗口都是一种好习惯:比如在一个窗口中显示错误日志,在另一个窗口中显示访问日志。这样,我们就能够随时获知网站上发生的事情并立即予以解决。
  在这个《Apache日志》系列的下一篇文章中,我们将讨论定制服务器日志,即如何在日志文件中记录所有我们想要的信息,排除所有我们不想要的信息

 

分享到:
评论

相关推荐

    apache配置文件详解

    - **说明**: ErrorLog指令用于指定Apache错误日志的文件路径。 - **作用**: 记录运行时产生的错误信息,有助于故障排查。 - **2.4.3 CustomLog** - **说明**: CustomLog指令用于定义自定义的日志文件及其格式。 ...

    Apache配置文件详解

    - **功能描述**:定义错误日志文件及记录级别。 - **配置示例**: - `ErrorLog logs/error_log` - `LogLevel warn` - **说明**:记录重要的警告和错误信息,便于后续分析。 ##### 25. LogFormat - **功能描述**...

    apache日志详解

    Apache日志详解主要关注的是Apache服务器如何记录和解析其访问日志和错误日志,以及如何根据这些日志进行分析和定制。Apache日志对于监控网站活动、追踪问题和优化性能至关重要。 访问日志(access_log)是Apache的...

    php apache mysql配置详解

    你可以在这里修改端口、数据存储位置、日志文件等设置。 4. **环境变量与路径**:确保Apache和PHP知道MySQL的位置,可能需要在环境变量中添加MySQL的bin目录。同时,确认PHP的mysqli或PDO扩展已启用,以便连接到...

    Linux中Apache的配置详解

    5. **日志记录**:Apache的日志文件通常位于`/var/log/httpd`目录下,包括错误日志和访问日志。可以通过修改`httpd.conf`中的`ErrorLog`和`CustomLog`指令来配置日志文件的位置和格式。 6. **安全性设置**:为了...

    CentOS Apache配置详解

    错误日志文件是 Apache 记录错误信息的地方,默认情况下是/var/log/httpd。这个文件中记录了 Apache 遇到的所有错误信息。 六、 Apache 的控制脚本 Apache 的控制脚本是/usr/sbin/apachectl, 这个脚本可以控制 ...

    Apache配置详解(最好的APACHE配置教程)

    遇到问题时,检查错误日志和使用`apachectl`命令行工具进行测试能帮助快速定位问题。 总的来说,Apache配置是一个深度定制的过程,理解这些基本概念和指令将使你能够有效地管理和优化你的Web服务器。请根据实际需求...

    查看apache日志

    - `ErrorLog`:用于指定错误日志的文件位置,记录Apache运行过程中遇到的所有错误信息。 - `LogLevel`:控制日志记录的详细程度,可选择`crit`(关键)、`error`(错误)、`warn`(警告)、`notice`(通知)、`...

    apache 配置中文详解

    ServerRoot 配置选项控制着 Apache 服务器的根目录,所有配置文件、日志文件和错误信息都保存在这个目录下。 PidFile PidFile 配置选项控制着 Apache 服务器的进程 ID 文件,记录了服务器的进程 ID。 ...

    apache服务器手册详解

    对于日志管理和故障排查,手册会解释如何配置日志文件,分析访问日志以获取用户行为和服务器性能数据,以及如何识别和解决常见的错误和问题。 对于多站点托管,Apache支持虚拟主机功能,可以让一台服务器同时运行多...

    记录一次ssh日志分析和apache日志分析

    错误日志记录了Apache在运行过程中遇到的各种错误信息,这对于诊断问题非常重要。常见的错误包括配置错误、权限问题等。错误日志中的一条记录可能类似于下面的例子: ``` [Wed May 23 04:15:11 2023] [error] ...

    详解如何使用Spark和Scala分析Apache访问日志

    详解如何使用Spark和Scala分析Apache访问日志 本文主要介绍了使用Spark和Scala来分析Apache访问日志的方法,涵盖了安装Spark和Scala、使用Scala编写Apache访问日志分析器、使用Spark分析Apache访问日志等内容。 ...

    Apache Log的每日一个日志文件及选择性记录设置

    这里`86400`代表一天的时间(24小时*3600秒),表示每天生成一个新的错误日志文件。 - **错误日志按大小分割:** ``` ErrorLog "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 1M" ``` 这里`1M`表示当...

    Linux操作系统服务器日志管理详解

    3. **错误日志**:由`syslogd`服务处理,各种系统服务、守护进程和应用程序通过`syslog`接口将重要事件记录在`/var/log/messages`文件中。此外,网络服务如HTTP和FTP服务器也会有自己的日志文件,如`access-log`用于...

    Apache HTTP Server Version 2.2 中文帮助详解文档

    错误日志则帮助管理员识别和解决问题。日志格式和存储位置都可以在配置文件中配置。 6. **性能优化**:Apache 2.2版本引入了多路I/O就绪通知(MPM,Multi-Processing Module)如Prefork、Worker和Event,以提高性能...

    apache日志文件详解和实用分析命令

    首先,Apache日志主要分为两种类型:访问日志(access_log)和错误日志(error_log)。访问日志记录了所有对服务器的请求,而错误日志则记录了服务器遇到的问题和异常。在默认配置下,这两个日志文件通常位于`/logs`目录...

    Apache配置详解_最好的APACHE配置教程

    七、错误日志与访问日志 ErrorLog记录服务器遇到的问题,CustomLog则记录所有HTTP请求的详细信息。你可以定制日志格式和输出位置。 八、URL重写(mod_rewrite) 通过RewriteEngine、RewriteRule和RewriteCond,可以...

Global site tag (gtag.js) - Google Analytics