Apache 错误日记(Error Log)记录分析

ErrorLog:

说明 存放错误日志的位置
语法 ErrorLog file-path|syslog[:facility]
默认值

ErrorLog logs/error_log (Unix)

ErrorLog logs/error.log (Windows 和 OS/2)

作用域 server config, virtual host

ErrorLog指令指定了当服务器遇到错误时记录错误日志的文件。如果file-path不是一个以斜杠(/)开头的绝对路径,那么将被认为是一个相对于ServerRoot的相对路径。

示例

ErrorLog /var/log/httpd/error_log

如果file-path以一个管道符号(|)开头,那么会为它指定一个命令来处理错误日志。

示例

ErrorLog "|/usr/local/bin/httpd_errors"

如果系统支持,使用"syslog"替代文件名将通过syslogd(8)来记载日志。默认将使用系统日志机制local7 ,但您可以用"syslog:facility"语法来覆盖这个设置,其中,facility的取值为syslog(1)中记载的任何一个名字。

示例

ErrorLog syslog:user

注意

当在非Unix平台上输入文件路径的时候,路径分隔符必须统一使用正斜线(/),即使那个平台本身使用反斜线(\)。

LogLevel:

说明 控制错误日志的详细程度
语法 LogLevel level
默认值 LogLevel warn
作用域 server config, virtual host

 

可以选择下列level,依照重要性降序排列:

Level 描述 例子
emerg 紧急(系统无法使用) "Child cannot open lock file. Exiting"
alert 必须立即采取措施 "getpwuid: couldn't determine user name from uid"
crit 致命情况 "socket: Failed to get a socket, exiting child"
error 错误情况 "Premature end of script headers"
warn 警告情况 "child process 1234 did not exit, sending another SIGHUP"
notice 一般重要情况 "httpd: caught SIGBUS, attempting to dump core in ..."
info 普通信息 "Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)..."
debug 调试信息 "Opening config file ..."

当指定了某个级别时,所有级别高于它的信息也会被同时记录。比如,指定 LogLevel info ,则所有notice和warn级别的信息也会被记录。

建议至少使用crit级别。

示例如下:LogLevel notice


注意:当错误日志是一个单独分开的正式文件的时候,notice级别的消息总是会被记录下来,而不能被屏蔽。但是,当使用syslog来记录时就没有这个问题。


下面将对错误日记进行详细说明:

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

错误日志通常被写入一个文件(unix系统上一般是error_log ,Windows和OS/2上一般是error.log)。在unix系统中,错误日志还可能被重定向到syslog通过管道操作传递给一个程序

错误日志的格式相对灵活,并可以附加文字描述。某些信息会出现在绝大多数记录中,一个典型的例子是:

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

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

错误日志中会包含类似上述例子的多种类型的信息。此外,CGI脚本中任何输出到stderr(标准错误)的信息会作为调试信息原封不动地记录到错误日志中。

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

在测试中,对任何问题持续监视错误日志是非常有用的。在unix系统中,可以这样做:

tail -f error_log

猜你喜欢

转载自blog.csdn.net/jlds123/article/details/25963231
今日推荐