lucderheld / php-greylog-exception
A php exception logging implementation to send log-messages to a graylog compatible backend.
Requires
- php: >=7.0
- graylog2/gelf-php: ~1.5
Requires (Dev)
- phpunit/phpunit: ~4.3
- squizlabs/php_codesniffer: ~2.0
This package is not auto-updated.
Last update: 2025-02-15 21:31:04 UTC
README
Is a very usefull state of the art exception class and handler for PHP 7

Usage / Installation
Recommended installation via composer:
Add php-greylog-exception to composer.json
either by running composer require lucderheld/php-greylog-exception
or by defining it manually:
"require": {
// ...
"lucderheld/php-greylog-exception": "1.0"
// ...
}
Reinstall dependencies: composer install
Install GrayLog2-Server:
How GrayLog2 can be installed is well documented at http://docs.graylog.org/en/2.1/pages/installation.html The easiest way to test GreyLog is to run it as a Virtual-Machine:
- Usage Example
<?php require 'vendor/autoload.php'; use GreyLogException\GreyLogException; use GreyLogException\GreyLogExceptionConfig; GreyLogExceptionConfig::$sApplicationNameToLog = "SampleApplicationName"; GreyLogExceptionConfig::$sGreyLogServerIp = "127.0.0.1"; class KernelException extends GreyLogException { const SAMPLE_EXCEPTION = [10000001, GreyLogException::WARNING, "This is the exception error text with a variable '%s'"]; } class Kernel { public static $bBooted = false; public function __construct() { try { if (!Kernel::$bBooted) { throw new KernelException(KernelException::SAMPLE_EXCEPTION, "someValue"); } } catch (KernelException $e) { echo "Exception " . $e->getCode() . " was sent to GreyLog-Server " . GreyLogExceptionConfig::$sGreyLogServerIp; } } } new Kernel();
GreyLog output:
- Combination with own functions
php-greylog-exception can be combined with user defined exception-functions. The functions are triggered before the exception is logged to GreyLog. To define a exception-function, just create a static-function and name it the same as the actual exception.
Example:
//... class KernelException extends GreyLogException { const NOT_BOOTED = [10000002, GreyLogException::NOTICE, "This exceptions fires the function KernelException::NOT_BOOTED() before logging the exception to GrayLog"]; public static function NOT_BOOTED(){ Kernel::$bBooted = true; echo "The function ".__FUNCTION__." was called!"; } } class Kernel { public static $bBooted = false; public function __construct() { try { if (!Kernel::$bBooted) { throw new KernelException(KernelException::NOT_BOOTED); } } catch (KernelException $e) { echo "Exception " . $e->getCode() . " was sent to GreyLog-Server " . GreyLogExceptionConfig::$sGreyLogServerIp; } } } new Kernel();
PHP-Output:
The function NOT_BOOTED was called!Exception 10000002 was sent to GreyLog-Server 127.0.0.1
- Parameter logging
When an exception occours it is important to have as many informations as possible. The php-greylog-exception-class collects all the parameters that where called and saves them as serialized strings.
Example:
//... class KernelException extends GreyLogException { const PARAMETER_SAMPLE = [10000003, GreyLogException::ERROR, "This exception is a sample exception for showing variables"]; } class Kernel { public static $bBooted = false; public function __construct(array $_aSampleArray) { if (!Kernel::$bBooted) { throw new KernelException(KernelException::PARAMETER_SAMPLE); } } } class SampleClass {} new Kernel(array(1, "two", new SampleClass()), 'NotNeededParameter');
GreyLog output:
License
The library is licensed under the GPL3 license. For details check out the LICENSE file.
Development & Contributing
You are welcome to modify, extend and bugfix as much as you like! :-) If you have any questions/proposals/etc. you are welcome to contact me via email.