Come posso dividere il log degli utenti in cartelle separate?

Non ho creato un’estensione per yii e nemmeno un wiki perche è davvero banale questo codice:

Come al solito mi andava di fare una cosa che ANCORA yii non fa: separare i log degli utenti per nome utente. Come al solito ho ficcato il naso nel file di configurazione ed ho guardato il nome della classe del log: CFileLogRoute. A questo punto ho creato la mia SensoLog ed ho riscritto il metodo che si occupa di definire la cartella di salvataggio:




class SensoLog extends CFileLogRoute {


    public function setLogPath($value) {

        $value .= Yii::app()->user->name . DIRECTORY_SEPARATOR;

        if (!file_exists($value))

            mkdir(strtolower($value), 0755);

        parent::setLogPath($value);

    }


}



NOTA 1il mio file di log si trova allo stesso livello della cartella protected (non dentro). Quindi in questo mio sitarello che sto costruendo avrò /log/admin con tutto il log dell’amministratore e /log/demo/ con tutti i log dell’utente demo.

NOTA 2 il file di log deve essere scrivibile altrimenti non potremo ne scrivere nel log ne creare cartelle.

Domanda un po’ banale. ma i log sono sempre abilitati e funzionanti?

w yii

La domanda non è per nulla banale. E la risposta è no. Tra l’altro ho dimenticato di dire che ci vuole almeno sta configuazione:




        'log' => array(

            'class' => 'CLogRouter',

            'routes' => array(

                array(

                    'class' => 'CFileLogRoute',

                    'class' => 'SensoLog',

                    'logFile' => date("Ymd") . '.log'

                ),



E che per fare log si deve scrivere




Yii::log($msg);



Facendo attenzione sia alla categoria che al livello del proprio log.