首页 > 开发 > Php > 正文

全面解读PHP的Yii框架中的日志功能

2020-02-21 20:47:15
字体:
来源:转载
供稿:网友

Yii页面级日志开启
在 Main.php中 log段添加、
下面显示页面日志 array( 'class'=>'CWebLogRoute', 'levels'=>'trace', //级别为trace 'categories'=>'system.db.*' //只显示关于数据库信息,包括数据库连接,数据库执行语句 ),
完整如下:

'log'=>array(    'class'=>'CLogRouter',    'routes'=>array(      array(        'class'=>'CFileLogRoute',        'levels'=>'error, warning',      ),              // 下面显示页面日志               array(                'class'=>'CWebLogRoute',                'levels'=>'trace',  //级别为trace                'categories'=>'system.db.*' //只显示关于数据库信息,包括数据库连接,数据库执行语句               ),       // uncomment the following to show log messages on web pages      /*      array(        'class'=>'CWebLogRoute',      ),      */    ),  ),

    
扩展 Yii2 自带的日志组件
   

 <?php/** * author   : forecho <caizhenghai@gmail.com> * createTime : 2015/12/22 18:13 * description: */namespace common/components;use Yii;use yii/helpers/FileHelper;class FileTarget extends /yii/log/FileTarget{  /**   * @var bool 是否启用日志前缀 (@app/runtime/logs/error/20151223_app.log)   */  public $enableDatePrefix = false;  /**   * @var bool 启用日志等级目录   */  public $enableCategoryDir = false;  private $_logFilePath = '';  public function init()  {    if ($this->logFile === null) {      $this->logFile = Yii::$app->getRuntimePath() . '/logs/app.log';    } else {      $this->logFile = Yii::getAlias($this->logFile);    }    $this->_logFilePath = dirname($this->logFile);    // 启用日志前缀    if ($this->enableDatePrefix) {      $filename = basename($this->logFile);      $this->logFile = $this->_logFilePath . '/' . date('Ymd') . '_' . $filename;    }    if (!is_dir($this->_logFilePath)) {      FileHelper::createDirectory($this->_logFilePath, $this->dirMode, true);    }    if ($this->maxLogFiles < 1) {      $this->maxLogFiles = 1;    }    if ($this->maxFileSize < 1) {      $this->maxFileSize = 1;    }  }}

在配置文件中这样使用:

'components' => [  'log' => [    'traceLevel' => YII_DEBUG ? 3 : 0,    'targets' => [      /**       * 错误级别日志:当某些需要立马解决的致命问题发生的时候,调用此方法记录相关信息。       * 使用方法:Yii::error()       */      [        'class' => 'common/components/FileTarget',        // 日志等级        'levels' => ['error'],        // 被收集记录的额外数据        'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION','_SERVER'],        // 指定日志保存的文件名        'logFile' => '@app/runtime/logs/error/app.log',        // 是否开启日志 (@app/runtime/logs/error/20151223_app.log)        'enableDatePrefix' => true,        'maxFileSize' => 1024 * 1,        'maxLogFiles' => 100,      ],      /**       * 警告级别日志:当某些期望之外的事情发生的时候,使用该方法。       * 使用方法:Yii::warning()       */      [        'class' => 'common/components/FileTarget',        // 日志等级        'levels' => ['warning'],        // 被收集记录的额外数据        'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION','_SERVER'],        // 指定日志保存的文件名        'logFile' => '@app/runtime/logs/warning/app.log',        // 是否开启日志 (@app/runtime/logs/warning/20151223_app.log)        'enableDatePrefix' => true,        'maxFileSize' => 1024 * 1,        'maxLogFiles' => 100,      ],      /**       * info 级别日志:在某些位置记录一些比较有用的信息的时候使用。       * 使用方法:Yii::info()       */      [        'class' => 'common/components/FileTarget',        // 日志等级        'levels' => ['info'],        // 被收集记录的额外数据        'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION','_SERVER'],        // 指定日志保存的文件名        'logFile' => '@app/runtime/logs/info/app.log',        // 是否开启日志 (@app/runtime/logs/info/20151223_app.log)        'enableDatePrefix' => true,        'maxFileSize' => 1024 * 1,        'maxLogFiles' => 100,      ],      /**       * trace 级别日志:记录关于某段代码运行的相关消息。主要是用于开发环境。       * 使用方法:Yii::trace()       */      [        'class' => 'common/components/FileTarget',        // 日志等级        'levels' => ['trace'],        // 被收集记录的额外数据        'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION','_SERVER'],        // 指定日志保存的文件名        'logFile' => '@app/runtime/logs/trace/app.log',        // 是否开启日志 (@app/runtime/logs/trace/20151223_app.log)        'enableDatePrefix' => true,        'maxFileSize' => 1024 * 1,        'maxLogFiles' => 100,      ],    ],  ],],            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表