Detekce debug módu v loggeru
- Azathoth
- Člen | 495
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.
- Azathoth
- Člen | 495
@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é.