Ola,

Als er in mijn applicatie iets fout gaat, dan wil ik daar een error-level aan kunnen koppelen.

Zelf dacht ik om gebruik te gaan maken van 3 gradaties:

1) notice: een kleine fout, bijv. een user vult een getal in in plaats van een string
2) warning: een serieuze fout, bijv. een file kan niet worden opgeslagen
3) error: er gaat iets goed mis, bijv. er kan geen database-verbinding tot stand komen

Een notice zou ik dan alleen loggen in een log-bestand. Een warning zou ik zowel loggen als mailen, en bij een error zou ik loggen en mailen en de rest van de applicatie stoppen.

Zijn deze 3 gradaties toereikend volgens jullie? Of zijn er nog tussenstappen te bedenken, en zo ja welke?
Wouter, dankjewel voor je voorbeeld. Fijn dat je zoveel moeite wilt doen!

Ik snap ongeveer wat je doet, alhoewel ik het nog wel vrij lastig vindt. Waarom gebruik je bij sommige methods $this->logger->debug ipv $this->logger->warning? Wat is het verschil?

Hier log je toch alsnog de complete exception?

$this->logger->notice('Catched exception: '.DebugUtil::stringifyException($e));

Ik zie dat je dit doet:

catch (\Exception $e)

Doe je dat normaal ook met die slash ervoor, of gebruik je dan use Exception?
>> Waarom gebruik je bij sommige methods $this->logger->debug ipv $this->logger->warning? Wat is het verschil?

Debug hoeft niet perse een fout te zijn, warning is een echte fout.

>> Hier log je toch alsnog de complete exception?
>>
>> $this->logger->notice('Catched exception: '.DebugUtil::stringifyException($e));

Ja, als ik een exception catch log je hem wel helemaal, je kan er echter niet veel andere informatie toegevoegd.

>> Doe je dat normaal ook met die slash ervoor, of gebruik je dan use Exception?

Voor dingen uit globale namespace gebruik ik altijd de slash ervoor.
>> Ja, als ik een exception catch log je hem wel helemaal, je kan er echter niet veel andere informatie toegevoegd.

Dan krijg je toch weer die dubbele meldingen zoals in mijn voorbeeldje?

>> Voor dingen uit globale namespace gebruik ik altijd de slash ervoor.

Oké. Heb je daar een speciale reden voor?
>> Dan krijg je toch weer die dubbele meldingen zoals in mijn voorbeeldje?

Mijn code laat gewoon zien hoe mijn log voorbeeldje van 2 reacties terug in de code eruit ziet. Zie jij dubbele meldingen?

>> Heb je daar een speciale reden voor?

't is de algemene standaard voor open source projecten.
>> Mijn code laat gewoon zien hoe mijn log voorbeeldje van 2 reacties terug in de code eruit ziet. Zie jij dubbele meldingen?

Nee, maar je hebt de catched exception melding ook niet voluit geschreven :)

Wat ik bedoel is dat in de catched exception melding die 2 voorgaande meldingen toch terugkomen? Daar zorgt dit toch voor, tenminste.. daar ging ik vanuit?

$this->logger->notice('Catched exception: '.DebugUtil::stringifyException($e));

Toevoeging op 25/11/2013 22:36:33:

>> geen FileSystemException, omdat serializen ook exceptions kan opleveren

Waar haal jij de informatie vandaan dat serialize exceptions kan gooien?
Aha... gaat dit dan over iets anders dan de php functie serialize?

http://us1.php.net/serialize

Alleen in de github link zie ik staan dat er een exception kan worden gegooid, maar dat gaat volgens mij niet over de php functie serialize?? Als het ook voor de functie geldt, waarom zie ik dat dan niet staan op de php.net pagina?
Een class kan ook een Serializable interface implementeren en dan kun je een exception throwen waarneer je vindt dat er iets uitzonderlijks gebeurd.
>> Een class kan ook een Serializable interface implementeren en dan kun je een exception throwen waarneer je vindt dat er iets uitzonderlijks gebeurd.

Oké, maar de functie serialize zelf (deze dus: http://us1.php.net/serialize) die gooit geen exceptions?
Als je een class die Serializable implementeert in de serialize functie gooit en die class gooit een exception, doet de serialize functie dat dus ook.

Reageren