yii2使用 db log

在本地测试的时候,输出log,还是输出到db中比较顺手。

配置过程:

1.加入log组件的配置:

'log' =>[
            # 追踪级别
            # 消息跟踪级别
            # 在开发的时候,通常希望看到每个日志消息来自哪里。这个是能够被实现的,通过配置 log 组件的 yiilogDispatcher::traceLevel 属性, 就像下面这样:
            'traceLevel' => YII_DEBUG ? 3 : 0,
            
            # 通过 yiilogLogger 对象,日志消息被保存在一个数组里。为了这个数组的内存消耗, 当数组积累了一定数量的日志消息,日志对象每次都将刷新被记录的消息到 log targets 中。 你可以通过配置 log 组件的 yiilogDispatcher::flushInterval 属性来自定义数量
            'flushInterval' => 1,
            
            'targets' => [
                'db' =>[
                    //'levels' => ['warning'],

                    'categories' => ['appadmin'],
                    #'class' => 'yiilogFileTarget',
                    'class' => 'yiilogDbTarget',
                    # 当 yiilogLogger 对象刷新日志消息到 log targets 的时候,它们并 不能立即获取导出的消息。相反,消息导出仅仅在一个日志目标累积了一定数量的过滤消息的时候才会发生。你可以通过配置 个别的 log targets 的 yiilogTarget::exportInterval 属性来 自定义这个数量,就像下面这样:
                    'exportInterval' => 1,
                    # 输出文件
                    //'logFile' => '@app/runtime/logs/appadmin.log',
                    'logTable' => '{{%system_log}}',
                    # 你可以通过配置 yiilogTarget::prefix 的属性来自定义格式,这个属性是一个PHP可调用体返回的自定义消息前缀
                    //'prefix' => function ($message) {
                        
                    //    return $message;
                    //},
                    # 除了消息前缀以外,日志目标也可以追加一些上下文信息到每组日志消息中。 默认情况下,这些全局的PHP变量的值被包含在:$_GET, $_POST, $_FILES, $_COOKIE,$_SESSION 和 $_SERVER 中。 你可以通过配置 yiilogTarget::logVars 属性适应这个行为,这个属性是你想要通过日志目标包含的全局变量名称。 举个例子,下面的日志目标配置指明了只有 $_SERVER 变量的值将被追加到日志消息中。
                    # 你可以将 logVars 配置成一个空数组来完全禁止上下文信息包含。或者假如你想要实现你自己提供上下文信息的方式, 你可以重写 yiilogTarget::getContextMessage() 方法。
                     'logVars' => [],
                ],
                /*
                'file2' =>[
                    'levels' => ['trace'],
                    'categories' => ['mylog'],
                    'class' => 'yiilogFileTarget',
                    # 当 yiilogLogger 对象刷新日志消息到 log targets 的时候,它们并 不能立即获取导出的消息。相反,消息导出仅仅在一个日志目标累积了一定数量的过滤消息的时候才会发生。你可以通过配置 个别的 log targets 的 yiilogTarget::exportInterval 属性来 自定义这个数量,就像下面这样:
                    'exportInterval' => 1,
                    # 输出文件
                    'logFile' => '@app/runtime/logs/my.log',
                    # 你可以通过配置 yiilogTarget::prefix 的属性来自定义格式,这个属性是一个PHP可调用体返回的自定义消息前缀
                    'prefix' => function ($message) {
                        
                        return $message;
                    },
                    # 除了消息前缀以外,日志目标也可以追加一些上下文信息到每组日志消息中。 默认情况下,这些全局的PHP变量的值被包含在:$_GET, $_POST, $_FILES, $_COOKIE,$_SESSION 和 $_SERVER 中。 你可以通过配置 yiilogTarget::logVars 属性适应这个行为,这个属性是你想要通过日志目标包含的全局变量名称。 举个例子,下面的日志目标配置指明了只有 $_SERVER 变量的值将被追加到日志消息中。
                    # 你可以将 logVars 配置成一个空数组来完全禁止上下文信息包含。或者假如你想要实现你自己提供上下文信息的方式, 你可以重写 yiilogTarget::getContextMessage() 方法。
                     'logVars' => [],
                ],
                */
            ],
        ],

2. 上面的配置需要加入console,或者common中

执行migration脚本:

./yii migrate --migrationPath=@yii/log/migrations/  

执行完成后,mysql中会出来一个system_log的表。

3.使用

Yii::info('111111111','appadmin');  
111111111代表是log数据的输出  appadmin是上面配置的categories

4.我们即可以看到system_log表中出来了一条log记录

5.后台做图形化界面,我们可以通过后台查看log

来源地址:http://blog.csdn.net/terry_water/article/details/51250478

原文地址:https://www.cnblogs.com/yhdsir/p/5896820.html