Yii Framework Forum: [Risolto] Yii::log ... Non Logga - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Risolto] Yii::log ... Non Logga Soluzione: forzare il flush istanziando il logger Rate Topic: -----

#1 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 03 January 2013 - 02:50 AM

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
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#2 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 03 January 2013 - 03:19 AM

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);


Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#3 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 03 January 2013 - 03:22 AM

Non ho capito ma sono contento che hai risolto.
0

#4 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 03 January 2013 - 06:53 AM

:) 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()
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users