[Risolto] Yii::log ... Non Logga

Potreste aiutarmi a capire cosa non va in questa configurazione ?




'log'=>array(

                                        'class'=>'CLogRouter',

                                        'routes'=>array(

                                            array(

                                                'class'=>'CFileLogRoute',

                                                'levels'=>'error, warning',

                                            ),

                                            array(

                                                'class'=>'CFileLogRoute',

                                                'logfile'=>'realtebo.log',

                                                'categories'=>'realtebo',

                                                'levels' => 'trace',

                                            ),

                                            

                                            array(

                                                'class'=>'ext.yii-debug-toolbar.YiiDebugToolbarRoute',

                                                'ipFilters'=>array('*'),

                                            ),

                                             

                                             

                                        ),

                                    ),



Vi spiego il problema.

Di per se il componente funziona, tant’è che quella magnifica estensione che è la yii-debug-toolbar va a meraviglia.

Ho precisato poi che i log di categoria ‘realtebo’ :) devono essere loggati sul file realtebo.log

Cerco di farlo scrivendo





 Yii::log("errore gravissimo", CLogger::LEVEL_TRACE, "realtebo" );




ma il file NON si muove, e non compaiono neppure errori nell error_log di apache (tipo permessi di scrittura mancanti, o che so…)

Il grosso problema è che non va neppure il log ‘normale’ (il primo route)





 Yii::log("errore gravissimo", CLogger::LEVEL_ERROR);




Questo NON genera nessuna gira nell’application.log

Però provocando un errore applicativo (esempio cercando di usare un componente non esistente Yii::app()->dummy), questo errore viene regolarmente loggato sull’application.log.

Cosa mi sfugge ?!?

EDIT:: Aggiungo un dettaglio importante: il problema di presenta da un CConsoleCommand, che però usa lo stesso identico config.main dell’applicazione principale, dove le due istruzioni di log qui sopra vanno tranquillamente

RISOLTO.

Il problema è dovuto al comportamento di Yii, che fa il flush solo al termine della chiamata di funzione, ma questa, essendo un while(1) non terminava mai …

Ora vanno entrambi i log.




 $l = Yii::getLogger();

        $l->log("errore gravissimo", CLogger::LEVEL_ERROR);

        $l->log("prova", CLogger::LEVEL_TRACE, "mirko");

        $l->flush(true);




Non ho capito ma sono contento che hai risolto.

:) Grazie !

E’ giusto che mi spiego meglio, altri potrebbero avere bisogno

Il punto è che se si usa Yii::log dentro ad un ciclo qualsiasi, in realtà l’output viene scritto su file solo quando termina dell’esecuzione dell’intera function php in cui viene invocato il log.

Per cui la soluzione sta nel ‘forzare’ la scrittura usando flush()