Detekce debug módu v loggeru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Azathoth
Člen | 495
+
0
-

Zdravím,
chtěl jsem si udělat malé vylepšení fireloggeru, aby logoval pouze v případě, že je zapnutý debug mód. Tedy tehdy, kdy se při vyskočení výjimky objeví velká, červeno bílá Tracy. A ve chvíli, kdy bude debug vypnutý, tedy při vyskočení výjimky se objeví pouze decentní: Server Error…blablabla…error 500, by nelogoval.
V bootstrapu mám toto:

<?php
$configurator->setDebugMode(Nette\Configurator::AUTO);
//$configurator->setDebugMode(Nette\Configurator::NONE);
$configurator->enableDebugger(__DIR__ . '/../log');
?>

když chci debug mód a když debug mód nechci, nastavím:

<?php
//$configurator->setDebugMode(Nette\Configurator::AUTO);
$configurator->setDebugMode(Nette\Configurator::NONE);
$configurator->enableDebugger(__DIR__ . '/../log');
?>

A co se týče výjimek, krásně to funguje, v prvním případě vyskočí červenobílá Tracy se zdrojovými kódy a Stacktrace, ve druhém případě vyskočí decentní hláška.
Ale s tím fireloggerem si nevím rady.
Snažím se zjistit stav debuggeru pomocí \Tracy\Debugger, ale nefunguje to.

<?php
class OnlyDevelopmentFireLogger extends FireLogger{

    public static function log($message, $priority = parent::DEBUG) {
        if (SomethingMagic) {
            parent::log($message, $priority);
        }
    }

}
?>

místo SomethingMagic jsem vyzkoušel už
\Tracy\Debugger::isEnabled()
\Tracy\Debugger::DETECT
\Tracy\Debugger::PRODUCTION
\Tracy\Debugger::DEVELOPMENT
\Tracy\Debugger::$strictMode

a všechny tyto řádky vrací stejnou hodnotu v prvním i druhém případě. Vůbec netuším, jak to mám vyřešit.
Budu vděčný za každou radu.

David Grudl
Nette Core | 8235
+
0
-

Jako hodnotu setDebugMode() používej TRUE nebo FALSE, ne konstanty.

Azathoth
Člen | 495
+
0
-

A mohl bych se dozvědět, na co tam ty konstanty jsou? Respektive, kdy je správné je používat?

Editoval Azathoth (16. 8. 2014 1:18)

David Matějka
Moderator | 6445
+
+1
-

a $productionMode si zkusil?

Azathoth
Člen | 495
+
0
-

@DavidGrudl Tak jsem vyzkoušel

<?php
$configurator->setDebugMode(TRUE);
$configurator->setDebugMode(FALSE);
$configurator->enableDebugger(__DIR__ . '/../log');
?>

a bohužel
\Tracy\Debugger::isEnabled()
\Tracy\Debugger::DETECT
i zbytek vrací stejné hodnoty jak při

<?php
$configurator->setDebugMode(TRUE);
//$configurator->setDebugMode(FALSE);
$configurator->enableDebugger(__DIR__ . '/../log');
?>

tak při

<?php
//$configurator->setDebugMode(TRUE);
$configurator->setDebugMode(FALSE);
$configurator->enableDebugger(__DIR__ . '/../log');
?>

Takže bohužel nemám ve své Firelogové třídě možnost poznat, co je zrovna zapnuté.

Azathoth
Člen | 495
+
0
-

@matej21 Děkuji, $productionMode funguje!