Edit this page

"Other" Logger

If all standard loggers are not useful for your case, then use Other logger which does nothing, except it gives you raw Log messages. This is useful if you need to send log message to some 3rd party tracking service, like Sentry.

Koldy framework won't provide service specific loggers in its core because every 3rd party service is specific and it's not possible to create simple enough abstraction without making config too complicated.

So, if you need to send log message(s) over HTTP, use this logger.

Configuration

[
    'enabled' => true,
    'adapter_class' => '\Koldy\Log\Adapter\Other',
    'options' => [
        'log' => ['debug', 'notice', 'info', 'warning', 'sql', 'error', 'critical', 'alert', 'emergency'],
        'send_immediately' => false,
        'exec' => function ($messages) {
            // do something with messages
        }
    ]
]

Options

Log

This is standard array of all log message levels that you want to forward to this logger.

Send Immediately

If send_immediately is set to true, then exec will be immediately executed. If you call Log::error() multiple times within one request, then function defined on exec will be executed multiple times. That's why we recommend this to be true only in CLI environment where such setting is useful, and false for HTTP requests.

Exec

The exec part is function which accepts one parameter which can be instance of \Koldy\Log\Message or array of \Koldy\Log\Message instances. If you set send_immediately to true, then only one message will be passed to exec function. If you set it to false, then framework will wait script to end and it'll then pass array of all messages to your exec function. It's up to you to decide what works best for your case.

You can put anything you want in your exec function because by the time it'll be executed, framework will set up everything.

Example: you want to send your log messages to some external server:

'exec' => function ($messages) {
    $request = new \Koldy\Http\Request();
    $request->setUrl('https://some.other.com/url/logger');
    $request->setMethod(\Koldy\Http\Request::POST);

    $body = [];
    foreach ($messages as $message) {
        $time = $message->getTime()->format('Y-m-d H:i:s');
        $who = $message->getWho();
        $level = $message->getLevel();
        $whatHappened = $message->getMessage();
        $body[] = "{$time} [{$level}] {$who}\t{$whatHappened}";
    }

    $body = implode("\n", $body);

    $request->setParam('log_msg', $body);
    $request->exec();
}

← Back To Log