chi riesce a estenderlo => CDbLogRoute ?

Salve chi avrà avuto modo di divertirsi con questa funzione Yii::log() (davvero utile per monitorare quel che succede in una applicazione) avrà notato che ha 3 parametri di cui 2 servono a catalogare/suddividere i tipi di messaggi loggati, il primo è l’unico che dà modo di personalizzare l’informazione loggata.

Esempio pratico (il mio) uso:


$ip = Yii::app()->request->userHostAddress;

if(isset(User::model()->findByPk(Yii::app()->user->id)->username))

 {$user=User::model()->findByPk(Yii::app()->user->id)->username;}

 else

 {$user = 'guest';}

Yii::log($ip . '|-|' . $user. '|-| l\'utente stà facendo la spesa al supermarket...', 'info', 'utente');

… avrete notato che per portarmi dietro IP, nome utente e messaggio devo poi splittare il primo parametro per mostrare i singoli valori ! :(

Qualche guru di cui non faccio nomi ma nick (sensorario) :P mi ha consigliato l’estensione della classe … ma … ce ne sono tante non si capisce dov’è la testa e la coda delle varie estensioni cha fà già da sè il framework!

:=) grazie

La classe da estendere è solo CDbLogRoute. Ce n’è una sola.

Tra l’altro ti posto subito il codice di un metodo di quella classe:




	protected function processLogs($logs)

	{

		$sql="

INSERT INTO {$this->logTableName}

(level, category, logtime, message) VALUES

(:level, :category, :logtime, :message)

";

		$command=$this->getDbConnection()->createCommand($sql);

		foreach($logs as $log)

		{

			$command->bindValue(':level',$log[1]);

			$command->bindValue(':category',$log[2]);

			$command->bindValue(':logtime',(int)$log[3]);

			$command->bindValue(':message',$log[0]);

			$command->execute();

		}

	}



Puoi modificare questo metodo ed aggiungere tutti i parametri che vuoi. Potresti aggiungere e togliere campi a piacere. Qui hai la query e quindi puoi fare quello che vuoi.

Grazie mille ;) anche se quel $logs passato come parametro arriva da qualche altra parte … CLogRoute.php mmm…