On 05/06/2014 09:39 AM, Federico Ulfo wrote:

Hi PHPers,

...
For PHP we'll probably use Monolog, someone suggested to use it wrapped into helper functions such as sail_info(), sail_debug(), sail_error(), sail_warn(), I'm personally skeptical for this solution because not too maintainable, but I agree that Monolog is too verbose and quite ugly to remember.

What's your experience with logging? Is there anything that you could suggesting to do and (especially) not to do when organizing the logs?

I really don't like to directly use custom logging classes/functions. You become locked into a specific framework and switching to the new "flavor of the month" in the future is a large workload for little gain.

For informational logging, I prefer to use the functions built in to PHP:
user_error with E_USER_WARNING, E_USER_NOTICE, and E_USER_DEPRECATED. Your guaranteed that the function is /always/ available and there are a number of options on where to send the log messages. If you want to use a system like monolog, you can still do that while using the user_error function, simply use the set_error_handler function and you can route the error message to whatever flavor of the month logging class is popular.

If you need more information then is easily contained in a string, then in your error handler you can use serialize it from the extra parameters or use $errcontext to get more information.
**code**
functionhandler($errno,$errstr,$errfile,$errline, $errcontext)
{
$errObject = new \StdClass;
$errObject->msg = $errstr;
$errObject->file = $errfile;
$errObject->line = $errline;
if (isset($errcontect['this'])
{
$errObject->classname = get_class($errcontect['this']);
}
$logMsg = json_encode($errObject);
\Fancy\Schmancy\Logging\Tool::log($logMsg);
return true;
}

**endcode**

For ending program execution abrubtly, by the same token I prefer to use the tools built into PHP:
user_error with E_USER_ERROR.  Again you have all the options above.

For libraries where I want to maintain flexibility, I prefer to combing information logging with throwing exceptions. That way the message is saved/logged regardless, and then whatever script is calling mine can either catch the error and recover, or not as is appropriate.


Anytime there is a handler/wrapper option in PHP that can be used to provide the custom functionality I want, I prefer to use the use that. That way my PHP code is insulated from 'flavor of the month' and api changes - while at the same time a small initialization script allows me to make full use of them.

_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

http://www.nyphp.org/show-participation

Reply via email to