Page tree
Skip to end of metadata
Go to start of metadata

O aplikační logování se ve Vivu 2.x stará knihovna Monolog. Jedná se o implementaci loggeru podle standardu PSR-3. Monolog je ve světě PHP oblíbenou logovací knihovnou. Je například používán ve frameworku Symfony, ale díky své architektuře není vázán na konkrétní aplikační platformu a je ho tedy možné používat prakticky v jakékoliv aplikaci.

Monolog

TODO

Kanál 

Každá instance loggeru má svůj kanál (channel), což je identifikátor loggeru. Jméno kanálu je pak zobrazeno jako součást každého logu.

 

<?php
 
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\FirePHPHandler;
 
// Create the logger with channel name 'my_logger'
$logger = new Logger('my_logger');

Handler  

Aby mohl logger zpracovávat jednotlivé záznamy (aplikační logy) je potřeba zaregistrovat alespoň jeden handler (handler), což je objekt, jehož úkolem je nějakým způsobem naložit s aplikačním záznamem (např. zápis do souboru, zápis do databáze, odeslání emailu, odeslání do Firebug konzole). Každý kanál může handlerů obsahovat více. Jednotlivé handlery se pak vkládájí do zásobníku (handler, který se registruje jako první se ke slovu dostane jako poslední).

 

// Now add some handlers
$logger->pushHandler(new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG));
$logger->pushHandler(new FirePHPHandler());

Parametry handleru

Severita  

Jedním z důležitých parametrů každého handleru je severita (severity), což je práh citlivosti. Handler, který má nastavenou severitu naWARNING bude zpracovávat logy, které mají severitu ≥ WARNING.

Bubble  

Další z parametrů každého handleru je příznak bubble, který určuje, jestli bude záznam "bublat" dále zásobníkem. Pomocí tohoto mechanizmu může handler, který je v zásobníku výše, zajistit, aby se záznam zásobníkem dále nešířil. Tohoto je využito u ApplicationLog Panelu pro Laděnku, který vytvoří handler (TracyHandler) a ten vloží na vrchol zásobníku všem registrovaným loggerům. Tím, žeTracyHandler má příznak bubble nastaven na FALSE, tak vyřadí z provozu všechny ostatní handlery, což je pro vývojový režim žádoucí.

Integrace Monologu ve Vivu  

TODO

Výchozí nastavení  

 

log:
    default_logger: # channel name
        label: vivo
        handlers:
            default_handler: # handler formal name
                _class: Monolog\Handler\StreamHandler
                stream: %appDir%/data/log/monolog.log
                level: ERROR

Customizace  

Logování do Firebug konzole  

 

log:
    default_logger:
        handlers:
            firephp_handler:
                _class: Monolog\Handler\FirePHPHandler
                level: DEBUG
                bubble: false

Posílání logů na email

log:
    default_logger:
        handlers:
            email_handler:
                _class: Monolog\Handler\NativeMailerHandler
                to: jerry@lundegaard.eu
                subject: Error on site xxx
                from: Mr. Monolog
                level: WARNING

 


  • No labels