Kom ihåg mig?
Home Menu

Menu


Fånga felen redan i apache

Ämnesverktyg Visningsalternativ
Oläst 2005-11-14, 13:54 #1
Axe Axe är inte uppkopplad
Medlem
 
Reg.datum: Oct 2005
Inlägg: 162
Axe Axe är inte uppkopplad
Medlem
 
Reg.datum: Oct 2005
Inlägg: 162
Jag råkade ut för att ett script gick fel ganska lång tid vilket medförde att vi missat en del intäkter. Eftersm det var ett M2M-gränssnitt så blev vi inte varse felet utan intäkterna minskade bara. Finns det något sätt i apache att göra så att man kan filtrera felen via en php-fil eller liknadne innan loggarna skrivs? Det finns ju mängder av loggar när man har olika domäner och att skapa ett fileter per domän är inte görligt, inte heller att köra samma loggfiler på samma domän.

Eller kan man få enbart php-genererade fel att skrivas separat? Nu hamnar ju också alla php-fel i domänens loggfil.
Idealt vore ju att få alla php-scriptfel att loggas centralt med angivande av sökvägen och scriptnamnet.
Axe är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-14, 14:08 #2
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
Kod:
<?php

define('ERR_LOGFILE', 'phpfellog.log');

$oeh = set_error_handler("eh");

function eh ($errno, $errstr, $errfile, $errline) {

 switch ($errno) { 
 	case E_USER_ERROR:
  	$errtitle = 'USER ERROR';
   break;
 
 case E_USER_WARNING:
 	$errtitle = 'USER WARNING';
 	break;
 	
 case E_WARNING:
 	$errtitle = 'WARNING';	
 	break;
 	
 case E_USER_NOTICE:
 	$errtitle = 'USER NOTICE';
 	break;
 	
 case E_NOTICE:
 	$errtitle = 'NOTICE';
 	break;
 	
 case E_STRICT:
 	$errtitle = 'RUNTIME NOTICE';
 	break;
 	
 default:
 	$errtitle = 'OKÄNT FEL'; 
 	break;
	}

	if (($errno != E_USER_NOTICE) && ($errno != E_NOTICE) && ($errno != E_STRICT)) {
 error_log(sprintf("%s\r\n%s (#%d) i %s:%d\r\n%s\r\n\r\n-------------------------------------\r\n",date("Y-m-d H:i:s"),$errtitle,$errno,$errfile,$errline,$errstr), 3, ERR_LOGFILE);
	}
}
?>
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-14, 16:45 #3
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
koala: set_error_handler() kräver att du "triggar" felen själv med trigger_error().

Det är inget som sker med automatik direkt.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-14, 16:46 #4
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
Du behöver inte dunka ut loggdatan från Apache till fil utan du kan pipe:a det till ett script/program.
kullervo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-14, 16:48 #5
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
Citat:
Originally posted by Jonas@Nov 14 2005, 16:45
koala: set_error_handler() kräver att du "triggar" felen själv med trigger_error().

Det är inget som sker med automatik direkt.
Där tar du fel. I sådana fall hade det inte varit någon vits med set_error_handler() eftersom man då lika gärna kan kalla på felhanteringsfunktionen direkt istället. Manualen: se.php.net/manual/en/function.set-error-handler.php
kullervo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-14, 16:52 #6
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Citat:
Ursprungligen postat av kullervo
Citat:
Ursprungligen postat av Jonas
koala: set_error_handler() kräver att du triggar felen själv med trigger_error().
Det är inget som sker med automatik direkt.
Där tar du fel. I sådana fall hade det inte varit någon vits med set_error_handler() eftersom man då lika gärna kan kalla på felhanteringsfunktionen direkt istället. Manualen: se.php.net/manual/en/function.set-error-handler.php
okej, har aldrig fått den till att funka och eftersom dom visar enbart exempel med trigger_error() så antog jag att man måste sköta all felhantering själv med trigger_error().
+ att det står att man kringgår php's egna felhantering.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-14, 19:50 #7
Axe Axe är inte uppkopplad
Medlem
 
Reg.datum: Oct 2005
Inlägg: 162
Axe Axe är inte uppkopplad
Medlem
 
Reg.datum: Oct 2005
Inlägg: 162
Citat:
Originally posted by kullervo@Nov 14 2005, 17:46
Du behöver inte dunka ut loggdatan från Apache till fil utan du kan pipe:a det till ett script/program.
Ja, jag ser att man kan pipa apache till ett script. Det finns till och med ett exempel i php och perl. Problemet som då kvarstår, (ett löst ett kvar) är att antingen måste varje vhost ha ett eget direktiv för att man inte ska tappa bort utsorteringen per domän eller så behöver man dubbla strömmen så den BÅDE skriver till script och till standardpipen som gör utan något script. Jag vill inte integrera på så låg nivå som i ett script.
Axe är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-14, 20:12 #8
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
Jag förstår inte.
kullervo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-14, 21:16 #9
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Citat:
Originally posted by Axe@Nov 14 2005, 20:50
Ja, jag ser att man kan pipa apache till ett script. Det finns till och med ett exempel i php och perl. Problemet som då kvarstår, (ett löst ett kvar) är att antingen måste varje vhost ha ett eget direktiv för att man inte ska tappa bort utsorteringen per domän eller så behöver man dubbla strömmen så den BÅDE skriver till script och till standardpipen som gör utan något script. Jag vill inte integrera på så låg nivå som i ett script.
Ge fan i att definiera någon error_log i vhostarna?
Definiera bara error_log i httpd.conf istället så samlas alla fel där i.

Sedan är det bara att skriva en parser som plockar ut dom fel du vill ha.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-15, 06:11 #10
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Citat:
Originally posted by Jonas@Nov 14 2005, 22:16
Ge fan i att definiera någon error_log i vhostarna?
Definiera bara error_log i httpd.conf istället så samlas alla fel där i.

Sedan är det bara att skriva en parser som plockar ut dom fel du vill ha.
grep borde väl duga utmärkt för att hämta ut de rader som är intressanta...
eg0master är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 19:08.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017