mirror of
https://github.com/dg/dibi.git
synced 2025-08-06 14:16:39 +02:00
FileLogger: Add option to log errors only (#351)
This commit is contained in:
@@ -20,6 +20,7 @@ $dibi = new Dibi\Connection([
|
|||||||
// enable query logging to this file
|
// enable query logging to this file
|
||||||
'profiler' => [
|
'profiler' => [
|
||||||
'file' => 'log/log.sql',
|
'file' => 'log/log.sql',
|
||||||
|
'errorsOnly' => false,
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@@ -51,6 +51,7 @@ class Connection implements IConnection
|
|||||||
* - profiler (array)
|
* - profiler (array)
|
||||||
* - run (bool) => enable profiler?
|
* - run (bool) => enable profiler?
|
||||||
* - file => file to log
|
* - file => file to log
|
||||||
|
* - errorsOnly (bool) => log only errors
|
||||||
* - substitutes (array) => map of driver specific substitutes (under development)
|
* - substitutes (array) => map of driver specific substitutes (under development)
|
||||||
* - onConnect (array) => list of SQL queries to execute (by Connection::query()) after connection is established
|
* - onConnect (array) => list of SQL queries to execute (by Connection::query()) after connection is established
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@@ -70,7 +71,8 @@ class Connection implements IConnection
|
|||||||
// profiler
|
// profiler
|
||||||
if (isset($config['profiler']['file']) && (!isset($config['profiler']['run']) || $config['profiler']['run'])) {
|
if (isset($config['profiler']['file']) && (!isset($config['profiler']['run']) || $config['profiler']['run'])) {
|
||||||
$filter = $config['profiler']['filter'] ?? Event::QUERY;
|
$filter = $config['profiler']['filter'] ?? Event::QUERY;
|
||||||
$this->onEvent[] = [new Loggers\FileLogger($config['profiler']['file'], $filter), 'logEvent'];
|
$errorsOnly = $config['profiler']['errorsOnly'] ?? false;
|
||||||
|
$this->onEvent[] = [new Loggers\FileLogger($config['profiler']['file'], $filter, $errorsOnly), 'logEvent'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->substitutes = new HashMap(function (string $expr) { return ":$expr:"; });
|
$this->substitutes = new HashMap(function (string $expr) { return ":$expr:"; });
|
||||||
|
@@ -25,11 +25,15 @@ class FileLogger
|
|||||||
/** @var int */
|
/** @var int */
|
||||||
public $filter;
|
public $filter;
|
||||||
|
|
||||||
|
/** @var bool */
|
||||||
|
private $errorsOnly;
|
||||||
|
|
||||||
public function __construct(string $file, int $filter = null)
|
|
||||||
|
public function __construct(string $file, int $filter = null, bool $errorsOnly = false)
|
||||||
{
|
{
|
||||||
$this->file = $file;
|
$this->file = $file;
|
||||||
$this->filter = $filter ?: Dibi\Event::QUERY;
|
$this->filter = $filter ?: Dibi\Event::QUERY;
|
||||||
|
$this->errorsOnly = $errorsOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -38,7 +42,10 @@ class FileLogger
|
|||||||
*/
|
*/
|
||||||
public function logEvent(Dibi\Event $event): void
|
public function logEvent(Dibi\Event $event): void
|
||||||
{
|
{
|
||||||
if (($event->type & $this->filter) === 0) {
|
if (
|
||||||
|
(($event->type & $this->filter) === 0)
|
||||||
|
|| ($this->errorsOnly === true && !$event->result instanceof \Exception)
|
||||||
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user