zoukankan      html  css  js  c++  java
  • 扩展 Yii2 自带的日志组件

    <?php
    
    /**
     * author     : forecho <caizhenghai@gmail.com>
     * createTime : 2015/12/22 18:13
     * description:
     */
    namespace commoncomponents;
    
    use Yii;
    use yiihelpersFileHelper;
    
    class FileTarget extends yiilogFileTarget
    {
        /**
         * @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' => 'commoncomponentsFileTarget',
                    // 日志等级
                    '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' => 'commoncomponentsFileTarget',
                    // 日志等级
                    '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' => 'commoncomponentsFileTarget',
                    // 日志等级
                    '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' => 'commoncomponentsFileTarget',
                    // 日志等级
                    '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,
                ],
            ],
        ],
    ],

    确定不需要调parent::init(); 或者直接继承Target

    不需要啊,因为已经继承了 yiilogFileTarget

  • 相关阅读:
    left join的多重串联与groupby
    转换坐标为数字型的函数
    oracle 11g 导出空表
    sql优化
    pl/sql使用技巧
    佳能mp288拆解步骤--绝对原创
    转)delphi chrome cef3 控件学习笔记 (二)
    mac, ios 模拟器
    一个人软件独立开发。
    Delphi在Android下通过WiFI进行调试
  • 原文地址:https://www.cnblogs.com/yhdsir/p/5181721.html
Copyright © 2011-2022 走看看