é误æ¥å¿å访é®æ¥å¿ä¸æ ·ä¹æ¯Apacheçæ åæ¥å¿ãæ¬æåæé误æ¥å¿çå
容ï¼ä»ç»å¦ä½è®¾ç½®åé误æ¥å¿ç¸å
³çé项ï¼ææ¡£é误åCGIé误çåç±»ï¼ä»¥åå¦ä½æ¹ä¾¿å°æ¥çæ¥å¿å
容ï¼ççã
ä¸ãä½ç½®åå
容
ãã é误æ¥å¿æ 论å¨æ ¼å¼ä¸è¿æ¯å¨å
容ä¸é½å访é®æ¥å¿ä¸åãç¶èï¼é误æ¥å¿å访é®æ¥å¿ä¸æ ·ä¹æä¾ä¸°å¯çä¿¡æ¯ï¼æ们å¯ä»¥å©ç¨è¿äºä¿¡æ¯åææå¡å¨çè¿è¡æ
åµãåªéåºç°äºé®é¢ã
ãã é误æ¥å¿çæ件ååæ¯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";
}
ãã æ 论å
·ä½éç¨çæ¯åªä¸ç§æ¹æ³ï¼åæ¶æå¼å¤ä¸ªç»ç«¯çªå£é½æ¯ä¸ç§å¥½ä¹ æ¯ï¼æ¯å¦å¨ä¸ä¸ªçªå£ä¸æ¾ç¤ºé误æ¥å¿ï¼å¨å¦ä¸ä¸ªçªå£ä¸æ¾ç¤ºè®¿é®æ¥å¿ãè¿æ ·ï¼æ们就è½å¤éæ¶è·ç¥ç½ç«ä¸åççäºæ
并ç«å³äºä»¥è§£å³ã转载