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
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();
- 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.
//...
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();
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.
//...
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');
The library is licensed under the GPL3 license. For details check out the LICENSE file.
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.