Doplněk Logger v Nette 2.0 beta

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

Ahoj, zkouším Nette 2.0 beta a mám problém s rozchozením doplňku Logger (diskuze k němu je zamknutá). Mám takové tušení, že půjde nejspíš o DI. Upravil jsem si config.neon i bootstrap.php podle sandboxu z distribučního ZIPu.

V config.neon mám v sekci common: services:

Nette\Logger:
  factory: FileLogger::createFileLogger
  option:
    defaultLogLevel: ERROR
    minimumLogLevel: INFO
    dateFormat: c

a v BasePresenteru v metodě startup()

$this->logger = NEnvironment::getService('Nette\Logger');

No ale pak Nette vyhodí výjimku NMissingServiceException: Service ‚Nette\Logger‘ not found.

Jedu na PHP 5.2. V alfa verzi to ještě vše fungovalo. Nehodil by sem někdo ze zkušenějších kód, kterým bych to mohl zprovoznit? Díky.

studna
Člen | 181
+
0
-

Máš v bootstrapu řádek

NEnvironment::loadConfig(); // !== $configurator->loadConfig();

?

Je to docela častá chyba.

radas
Člen | 221
+
0
-

Neměl jsem ho tam. Tedy dříve ano, ale ne pro Nette 2.0 beta. Jak jsem psal, upravil jsem bootstrap.php podle toho v sandboxu. Když jsem tam ten řádek vrátil, tak to skončí Fatal Error: Cannot use object of type NDiContainer as array – na řádku 60 (lib/nette/components/Logger/FileLogger.php.

public static function createFileLogger($options = array())
57:        {
58:            $logger = new FileLogger();
59:
60:            if (isset($options['filenameMask']))
61:                $logger->setFilenameMask($options['filenameMask']);
kucejan
Člen | 4
+
0
-

Nette jako první parametr předává do továrniček instanci Containeru.

Jednou z možností je tak úprava metody createFileLogger. Pro tvou verzi:

public static function createFileLogger(NDiContainer $container, $options = array()) {
radas
Člen | 221
+
0
-

Je to skutečně tak. Díky moc!