tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Přechodné vypnutí logování

před 3 lety

spagr
Člen | 11
+
0
-

Zdravím,
mám nějakou šanci v novém pojetí logování (Profileru), kdy se logování do souboru „na tvrdo“ deklaruje přímo v dibi::connect(), pro nějakou část kódu logování přechodně potlačit ?

Předem díky

před 3 lety

Milo
Moderator | 1035
+
0
-

Všechny loggery jsou uloženy v DibiConnection::$onEvent. Pokud používáš statickou dibi, udělal bych to cca takhle:

$old = dibi::getConnection()->onEvent;
dibi::getConnection()->onEvent = NULL;
...
...
...
dibi::getConnection()->onEvent = $old;

anebo asi lépe s využitím extension method:

dibi::getConnection()->extensionMethod('logging', function(DibiConnection $db, $run) {
    static $olds;

    $hash = spl_object_hash($db);
    if ($run) {
        if (isset($olds[$hash])) {
            $db->onEvent = $olds[$hash];
            unset($olds[$hash]);
        }
    } else {
        $olds[$hash] = $db->onEvent;
        $db->onEvent = NULL;
    }
});

dibi::getConnection()->logging(FALSE);
dibi::getConnection()->logging(TRUE);