如何使用Yii框架将错误日志放在错误日志文件中,例如error.log?

时间:2013-07-29 05:23:00

标签: php yii

为什么这个配置根本不记录我的日志文件夹中的任何错误

'log' => array(
    'class' => 'CLogRouter',
    'routes' => array(
        array(
            'class'=>'CFileLogRoute',
            'levels'=>'error, warning, info',
            'categories'=>'system.*',
            'logPath'=> '/export/home/sasori/branch/logs/',
            'logFile'=>'error.log',
        ),
         array(
             'class'=>'CWebLogRoute',
             'levels'=>'info',
             //'categories'=>'application.*',
            'showInFireBug'=>true
         ),
    ),

或者这个

'log' => array(
    'class' => 'CLogRouter',
    'routes' => array(
        array(
            'class'=>'CFileLogRoute',
            'levels'=>'error, warning, info',
            'categories'=>'system.*',//'application.*',
            'logPath'=> '/export/home/sasori/branch/logs/',
            'logFile'=>'error.log',
        )
    ),

我还将error.log文件的权限更改为0777,但它根本没有帮助

3 个答案:

答案 0 :(得分:2)

Yii的核心几乎没有呼叫Yii::log()。如果您将Yii::trace()设为true并添加日志级别YII_DEBUG,则大多数都是trace

答案 1 :(得分:0)

我也对Yii日志系统感到困惑。在我的项目中,日志按类别分隔,并保存在相应的文件夹中。但是日志系统运行不正常。有时yii不会写日志,有时日志配置会导致错误,说'无效路径......'

'log'=>array(
        'class'=>'CLogRouter',
        'routes'=>array(
            array(
                'class'=>'CFileLogRoute',
                'levels'=>'error, warning, info',
                'categories'=>'application',
            ),
            //where problem occures
            array(
                'class'=>'CFileLogRoute',
                'levels'=>'error, warning, info',
                'logFile' => date('Ymd').'.log',
                //'logPath' => '../../logs/se',
                'logPath' => 'logs/se',
                'categories' => 'se.*',
            )
        ),
    ),

任何人都知道为什么?

答案 2 :(得分:0)

如果您将“类别”设置为具有类别的数组,也许会有所帮助

    [HttpGet]
    [ProducesResponseType(200)]
    [ProducesResponseType(404)]
    public async Task<IActionResult> GetObject([FromQuery] int Id)
    {
      ...
      return Ok(some_result_to_show);   // This generates code 200
    }