Log Route dinamico


(Emiliano 3wps) #1

Ciao a tutti.

Ho bisogno di loggare la chiamata di un metodo su DB ma non posso scrivere una route specifica nel main.php.

Ho creato la classe di Log DB come indicato nel famoso tutorial:

Log su DB

Inserendo nel main.php la seguente riga, il logging funziona correttamente:


array(

				  'class'=>'LogDB',

				  'enabled'=>true,

				  'levels'=>'info',

				),

Ma non potendo, sto provando (senza successo) ad aggiungere la route dinamicamente nel solo metodo in cui mi serve (per evitare di riempire il DB di log di tipo info):




$cc = Yii::app()->getComponent('log');

$cc->setRoutes(array(

                'class'=>'CprLogDB',

		'connectionID'=>'db',

                'enabled'=>true,

                'levels'=>'info',

            ));



Purtroppo spostato qua, non funziona niente.

Dove sto sbagliando? Sull’internet, Stackoverflow compreso, non ho trovato esempi o spiegazioni su come usare la setRoutes.

Grazie.


(Emiliano 3wps) #2

Dopo vari test, sono andato a guardarmi direttamente la classe di LogRouter per capire come si aspettava le route arrivando alla conclusione che non si aspetta l’array così come lo mettereste nel main.php ma un oggetto.


$cc = Yii::app()->getComponent('log');

$dbLogRoute = new LogDB();

$dbLogRoute->enabled = true;

$dbLogRoute->levels = 'info';

$customRoutes = array($dbLogRoute);

$cc->setRoutes($customRoutes);

La soluzione funziona ed agisce solo all’interno del flusso corrente della pagina.

ATTENZIONE: La setRoutes lanciata come sopra, SOVRASCRIVE eventuali routes guadagnate dal main.php

Se dovete andare in aggiunta dovete necessariamente chiamare una getRoutes, ciclare la mappa e ricreare tutti i singoli oggetti in quanto la CMap ritornata, è in sola lettura e non potrete lanciarci sopra una add.

Spero di essere stati utili anche a voi.