Yii Logging Tips and Reference

Last updated:

Adding stuff to beforeDelete(), beforeSave()

You probably hook calls to Yii::log in one of these functions. Be careful to call return parent::beforeSave() (or return parent::beforeDelete) (not just call the method, call return too!)

//GOOD
public function beforeDelete() {
    Yii::log("Writing to log",  CLogger::LEVEL_WARNING,'foo.bar');
    return parent::beforeDelete();
}
//BAD
public function beforeDelete() {
    Yii::log("Writing to log",  CLogger::LEVEL_WARNING,'foo.bar');
    parent::beforeDelete(); // no return
}

Add categories to your calls to Yii::log

Otherwise they don't work. A sample complete call to Yii::log would be:

Yii::log("this is my log message", CLogger::LEVEL_WARNING, "mycategory.mysubcategory");

Sample config file

This will save all log messages with level ranging from CLogger::LEVEL_ERROR to CLogger::LEVEL_INFO having categories matching "mycategory.*" (note that it would match the call in the previous example because its category is "mycategory.mysubcategory") and it will write it to protected/runtime/mycustomfile1

'log' => [
    'class' => 'CLogRouter',
    'routes' => [
        [
            'class' => 'CFileLogRoute',
            'levels' => 'error,warning,info',
            'categories'=>'mycategory.*',
            'logFile'=>'mycustomfile1'
        ],
        //... other configs...

Dialogue & Discussion