Hallo in die Runde,
die neuen Logging-Funktionen basierend auf Monolog erlaubt es, prinzipiell Log-Einträge unterschiedlichem Levels abzusetzen (info, notice, warning, error, alert, emergency, critical). Je schwerer der Fehler destso höher das Level. In OXID ist es standardmäßig so konfiguriert, das Log-Einträge erst ab Level “error” in das Log geschrieben werden.
Ich will nun eine “Info” in das Log schreiben (also unterhalb des “error”-Levels):
$oLogger = Registry::getLogger();
$oLogger->info($oEx->getMessage(), array($oEx));
Dieser Log-Eintrag wird nun aufgrund des niedrigen Standard-Log-Levels nicht ins Log geschrieben.
Setze ich in der config.inc.php das logLevel niedriger auf “info” …
$this->sLogLevel = 'info';
… wird mein Log-Eintrag geschrieben. Nun könnte ich das so lassen. Aber damit könnte nun mein Log sich unnötig durch infos und warnings aufblähen. Daher war meine Idee, das ich die Config-Variable “sLogLevel” kurz überschreibe, den info-logger starte und anschließend die Config-Variable wieder auf den Standardwert zurück setze:
$sDefaultLogLevel = $oConfig->getConfigParam('sLogLevel');
$oConfig->setConfigParam('sLogLevel', 'info');
$oLogger = Registry::getLogger();
$oLogger->info($oEx->getMessage(), array($oEx));
$oConfig->setConfigParam('sLogLevel', $sDefaultLogLevel);
Leider reicht das nicht aus, da der Logger bereits schon lange vorher vollständig initialisiert ist und nur noch instanziert wird. Eine Funktion zum nachträglichen ändern des Log-Levels habe ich nicht gefunden.
Ich könnte natürlich einfach meine Info-Log-Message als Error setzen. Dann erscheint sie korrekt im Log, aber dann als Error und nicht als Info.
Habt Ihr eine Idee, wie ich es SAUBER lösen kann?