一、位置和内容
前文讨论了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"
}
无论具体采用的是哪一种方法,同时打开多个终端窗口都是一种好习惯:比如在一个窗口中显示错误日志,在另一个窗口中显示访问日志。这样,我们就能够随时获知网站上发生的事情并立即予以解决。
问题一:Windows 7 共享文件的时候出现 无法共享您的文件夹 您对该文件夹没有操作权限,请使用创建文件的的用户权限登陆进行共享文件夹
问题二:共享文件夹下打开文件时错误 有可能那个文件删除了 补充: 那把这个文件放到那个可以打开的文件夹里面看看能不能打开再说 追问: 一样不行呢! 回答: 你试试移那个不能打开的文件夹到外面,再设置共享,看看能不能打开 追问: 移到外面也是一样,A文件夹里面的文件可以打开!而B文件夹里面的文件打开就说打 开文 件时错误 回答: B文件夹里面移到外面也不能打开不话,那建议你叫维修人员去看一下吧.有没有试试重装一下系统
问题三:打开Excel共享文件时出现错误提示,请问出现错误的原因和解决方式是什么呢?谢谢 最简单的办法重装一次WPS 就可以了
问题四:【急】win7网络共享了文件但是其他电脑无法访问 100分 不知你跟我的情况是否一样。我用网上所说的方法,全部无法解决我局域网共享文件夹的问题。比如A要访问B的共享文件夹,在网络上看到对方电脑,点击进去输入B电脑的账号密码提示未知用户名或错误密码。
最后感觉应该是两台电脑都有个同名的账号,密码也一样,导致访问出问题!最后我通过在B电脑上新建一个管理员类型的账号,A电脑通过网络输入B电脑新的账号密码即可访问
问题五:复制文件或文件夹时出错? 可能原因:
1、公司的电脑有权限的限制,用户无法进行上传功能,但默认都是可以下载(即复制公司电脑文件),你可以修改一下权限,看当前登录的是否为管理员,并在公司电脑上设置共享文件的权限,即右击,打开共享和安全,找到访问设置,把所有用户都添加所有权限就可以了;
2、可能是你自己电脑的问题,看下你的电脑是否也有相关权限的设置,并更改;
3、看下是否只是某个文件不能复制,如果是可能那个文件损坏,如果都不能复制,问题同上;
最后祝你成功额;
问题六:Linux设置共享文件夹出错 告诉你个最简单的方法, 保证 Linux SSH服务开启,然后使用ftp工具(比如:filezila ),直接使用root 账户登录,
直接就可以拖拽了,不用整共享了,麻烦。。。
问题七:Win10访问不了共享文件夹提示网络错误怎么办 网络防火墙被打开了吧?第二,用户策略被打开,或网络不通!对方取消共享文件了
问题八:我在电脑里设置了共享文件夹,可是打开电视共享时老是提示获取共享文件失败??? 尊敬的康佳用户:
您好,抱歉康佳产品给您带来不便了!对于您描述如需康佳网络电视机的“共享”功能,因您未提供电脑使用的操作系统,建议您对照如下设置:
1、如电脑为Win7系统:在电脑中,选择需要共享文件,点击鼠标右键,选择属性-共享;在密码保护里选择 网络与共享中心 在弹出的对话框中选择 关闭密码保护共享保存修改;设置共享文件夹,点击文件夹鼠标右键 选择属性-共享,点击共享,在弹出的对话框中,单击添加,或者单击下拉箭头查找用户:everyone添加;添加后点击共享,完成打开电视,进行搜索
2、如电脑为XP系统:
1)在电脑桌面点击我的电脑图标右键---选择管理---选择本地用户和组---选择用户---双击guest(供来宾访问计算机或访问域的内置帐户)---在账户已停用的方框前不要打钩,点击应用保存退出;
2)在电脑里面把需要共享的视频、音乐(限MP3)文件夹共享;
3)进入电视机,按照提示搜索网上邻居即可;
请您按照上述的步骤,重新操作,试一下,感谢您的咨询,祝您生活愉快。
问题九:win7和XP共享文件时出现错误 1.防火墙是否关闭
如果在Windows 7和Windows XP之间无法看到对方,首先请坚持二者的防火墙是否关闭。
关闭Windows 7防火墙
在关闭Windows 7和Windows XP的系统防火墙后,你要注意是否安装了第三方防火墙。如果已安装,请关闭。
XP系统的电脑无法访问Windows7的共享文件夹,有些虽然能看到Windows7下的共享目录,但是一旦进入目录,就会提示没有访问权限。
2.开启Guest帐户
直到现在,也没有一个比较合理的解释来说明,为什么不开启Guest帐户会影响到Windows系统之间的互访。这一情况在解决Windows 98和Windows XP之间已经是不止一次的得到印证。因此,在Windows XP和Windows 7之间的互访,也需要开启Guest帐户。
开启Windows 7的来宾帐户
同样的,你还需要在Windows XP系统中,也开启Guest来宾帐户。
问题十:共享文件夹的时候提示:试图共享xxx 时出现错误,没有启动服务器服务。是什么原因,怎么办? 鼠标右键 选择属性 有一个共享的选项 选中它! 没有打开共享的话 就安装上面的提示打开共享就可以了!
&emspWin10系统使用文件共享访问文件服务器的时候,报错0x800004005,使用以下方法,勾选SMB 1.0/CIFS File Sharing Support,然后重启,问题解决。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)