[TYPO3-project-4-3] improve the errorhandling

Dan Osipov dosipov at phillyburbs.com
Sat Oct 10 21:19:11 CEST 2009


Question: what if the DB can't be established? Like if the server has 
temporarily maxed out on connections? Will there be a fallback to log to 
PHP error log?

Dan Osipov
Calkins Media
http://danosipov.com/blog/

Rupert Germann wrote:
> hi,
> 
> as long no one tests it, I'll continue to pimp it ;-)
> 
> Here's v6 of the improved error and exception handling which I now dare 
> to call it: "quite final".
> 
> changes:
> - errors and exceptions are now written to the syslog table without 
> having the need to have a logged in be-user (implemented an own 
> writeSyslog() function).
> - if there's no DB connection present the error and exceptionhandling 
> tries to establish a connection to be able to write to sys_log or devlog
> 
> I found out that this is needed, during testing some CLI script issues 
> with a broken caching framework configuration.
> If the caching framework throws an exception this happen before a DB 
> connection has been established and so there were no entries written to 
> devlog or sys_log.
> 
> greets
> rupert
> 
> 
> 
> 
> Rupert Germann schrieb:
>> hi again,
>>
>> I simplified the patch and removed the "flashmessages to adminpanel" 
>> functionality.
>>
>> Changes:
>> - Error messages are now redered to the adminpanel with 
>> $TT->setTSlogMessage()
>> - Errors and Exceptions are written to the sys_log table if a BE_USER 
>> object is present
>>
>> With this last change the improved error and exception handling can 
>> now write its messages to all available logging systems in TYPO3.
>>
>> And additionally PHP errors which are handled by the errorhandler and 
>> which are not registered as exceptional errors will not break the 
>> output anymore. They are displayed as flashmessages in BE and in the 
>> adminpanel in FE.
>>
>> see screenshots.
>>
>> greets
>> rupert
>>
>>
>>
>> Rupert Germann schrieb:
>>>> hi & rfc
>>>>
>>>> here's a new approach to make the errorhandling fit for final.
>>>>
>>>> features:
>>>> - if display of errors is enabled and an error occurs this error is 
>>>> displayed as flashmessage
>>>> - BE error flashmessages are displayed by template.php
>>>> - FE error flashmessages are displayed in the adminpanel (see 
>>>> screenshot)
>>>> - to distinguish between production- and debug-mode I introduced a 
>>>> new constant ERRORHANDLER_MODE which depends on the configured 
>>>> exceptionhandler
>>>> - all calls to errorhandling or exceptionhandling are logged to syslog
>>>> to enable the syslog, add this to your localconf.php:
>>>> $TYPO3_CONF_VARS['SYS']['systemLog'] = 'error_log,,2';   
>>>> $TYPO3_CONF_VARS['SYS']['systemLogLevel'] = 0;
>>>>
>>>> - I introduced a new TYPO3_CONF_VARS parameter:
>>>> $TYPO3_CONF_VARS['SYS']['errorHandlerErrors']
>>>>
>>>> this parameter configures which errors reach the errorhandler.
>>>>
>>>> $TYPO3_CONF_VARS['SYS']['exceptionalErrors'] is still used, it 
>>>> configures the errors which should be converted to an exception.
>>>>
>>>> So we have 2 kind of errors: errorhandler errors and exceptionsl 
>>>> errors.
>>>>
>>>> The default configuration looks like this:
>>>>
>>>> 'errorHandlerErrors'=> E_ALL ^ E_NOTICE,
>>>> 'exceptionalErrors' => E_ALL ^ E_NOTICE ^ E_WARNING ^ E_USER_ERROR ^ 
>>>> E_USER_NOTICE ^ E_USER_WARNING
>>>>
>>>> That means: everything but E_NOTICE reaches the errorhandler. But 
>>>> the errorhandler function throws only an exception on exceptional 
>>>> errors like e.g. E_RECOVERABLE_ERROR.
>>>>
>>>>
>>>> INFO:
>>>> this patch contains patch 12130 v5.
>>>>
>>>>
>>>> greets
>>>> rupert
>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------ 
>>>>
>>>>
>>>
>>
>>
>> ------------------------------------------------------------------------
>>
>>
>> ------------------------------------------------------------------------
>>
> 


More information about the TYPO3-project-4-3 mailing list