Yiiのロギング

Yiiでログをとるには

Yii::log($message, $level, $category);

を利用します。
$levelにはinfo、trace、warning、error、profileなどを設定します。デフォルトはinfoです。
$categoryには適当な文字列を設定します。デフォルトはapplicationです。

Yii::logで記録したログは、ブラウザ、メール、ファイル、データベースなどに出力されます。
設定は、protected/config/main.phpの以下の部分で行います。

'preload'=>array(
  'log',
),

'components'=>array(
  'log'=>array(
    'class'=>'CLogRouter',
    'routes'=>array(
      //levelがerrorで、かつ、categoryがdangerの場合はメールで通知する
      array(
        'class'=>'CEmailLogRoute',
        'levels'=>'error',
        'categories'=>'danger',
        //$_GETや$_POST、セッションIDなどの付加情報も追加する
        'filter'=>'CLogFilter',
        //宛先
        'emails'=>'nakade@example.jp',
        //送信元
        'sentFrom'=>'webmaster@example.com',
        //件名
        'subject'=>'Error at Example',
      ),
      //levelがerrorの場合は、level_error.txtに保存する
      array(
        'class'=>'CFileLogRoute',
        'levels'=>'error',
        //ファイルはprotectec/runtime以下に作成されます
        'logFile'=>'level_error.txt',
        //$_GETや$_POST、セッションIDなどの付加情報も追加する
        'filter'=>'CLogFilter',
      ),
      //levelがwarningかinfoの場合は、level_warning_and_info.txtに保存する
      array(
        'class'=>'CFileLogRoute',
        'levels'=>'warning, info',
         //ファイルはprotectec/runtime以下に作成されます
       'logFile'=>'level_warning_and_info.txt',
        //$_GETや$_POST、セッションIDなどの付加情報も追加する
        'filter'=>'CLogFilter',
      ),
      //levelがprofileの場合は、FireBugなどのデベロッパーツールに出力する
      array(
        'class'=>'CWebLogRoute',
        'levels'=>'profile',
        'showInFireBug'=>true,
        'ignoreAjaxInFireBug'=>true,
      ),
      //ログはブラウザに出力する
      array(
        'class'=>'CWebLogRoute',
      ),
    ),
  ),
),

※参考
公式ガイド
YiiBase::log
CWebLogRoute

投稿日:
カテゴリー: php タグ: