This project provides a handler for Monolog that pushes to ZendHQ monitoring.
composer require zendtech/zendhq-monolog-handler
- A ZendHQ node
- ZendPHP >= 7.2
- The ZendHQ extension
- Monolog 2.4+ or 3.4+
The below examples demonstrate how to create a ZendHQHandler
instance for use in writing logs with Monolog.
Default usage is to use Monolog/PSR-3 log levels to indicate severity.
You can instantiate the provided ZendTech\ZendHQ\MonologHandler\ZendHQHandler
class without any arguments, or with the $level
and/or $bubble
arguments:
use Monolog\Logger;
use ZendTech\ZendHQ\MonologHandler\ZendHQHandler;
// PHP 7:
// - Default level (DEBUG) and allowing bubbling:
$handler = new ZendHQHandler();
// - Setting a level mask of warnings or greater only:
$handler = new ZendHQHandler(null, Logger::WARNING);
// - Default level (DEBUG), but disallowing bubbling
$handler = new ZendHQHandler(null, Logger::DEBUG, false);
// PHP 8:
// - Default level (DEBUG) and allowing bubbling:
$handler = new ZendHQHandler();
// - Setting a level mask of warnings or greater only:
$handler = new ZendHQHandler(level: Logger::WARNING);
// - Default level (DEBUG), but disallowing bubbling
$handler = new ZendHQHandler(bubble: false);
ZendHQ custom monitoring rules will specify severity in the rule definition, so severity is ignored.
To use such custom rules, provide the custom rule name when instantiating ZendHQHandler
.
The following examples target a "my_custom_rule" rule.
While you can provide a default level to handle, the value will not be sent to ZendHQ, and only used to determine if a message will get logged.
use Monolog\Logger;
use ZendTech\ZendHQ\MonologHandler\ZendHQHandler;
// PHP 7:
// - Default level (DEBUG) and allowing bubbling:
$handler = new ZendHQHandler('my_custom_rule');
// - Setting a level mask of warnings or greater only:
$handler = new ZendHQHandler('my_custom_rule', Logger::WARNING);
// - Default level (DEBUG), but disallowing bubbling
$handler = new ZendHQHandler('my_custom_rule', Logger::DEBUG, false);
// PHP 8:
// - Default level (DEBUG) and allowing bubbling:
$handler = new ZendHQHandler('my_custom_rule');
// - Setting a level mask of warnings or greater only:
$handler = new ZendHQHandler('my_custom_rule', level: Logger::WARNING);
// - Default level (DEBUG), but disallowing bubbling
$handler = new ZendHQHandler('my_custom_rule', bubble: false);
The ZendHQHandler
implements each of Monolog\Handler\ProcessableHandlerInterface
and Monolog\Handler\FormattableHandlerInterface
.
As such, you can attach processors and formatters to your handler in order to manipulate the information logged.
See the Monolog documentation on formatters and processors for more details.
As examples:
$handler->setFormatter(new \Monolog\Formatter\LineFormatter());
$handler->pushProcessor(new \Monolog\Processor\PsrLogMessageProcessor());
Monolog writes to channels, which are essentially just a way of partitioning different logs from each other.
use Monolog\Logger;
$logger = new Logger('channel_name');
From here, you need to add the handler to the logger:
// Where $handler is the instance created via one of the examples in previous sections
$logger->pushHandler($handler);
To log, use one of the various logging methods of the $logger
instance:
$logger->warning('This is a warning!');
- The channel name is sent to ZendHQ monitoring events as the type; you will see this in the event drawer.