log

通过配置Web.config来完成

1 数据库增加 ‘前缀_log’表

2 配置Web.config

'bootstrap' => ['log'],
'components' =>[
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0, //级别
'targets' => [
'file' => [ //使用文件存储日志
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
'legcc' =>[ //自定义模式 [例如发邮件、微信等]
'class' => 'app\components\LegccLogTarget',
'levels' => ['error', 'warning'],
'categories' => [
'yii\db\*',
'yii\web\*',
'yii\base\*',
],
'except' => [
'yii\web\HttpException:404',
],
'logVars' => [],
],
'db' =>[ //使用数据库存储日志
'class' => 'yii\log\DbTarget',
'levels' => ['error', 'warning'],
'categories' => [
'yii\db\*',
'yii\web\*',
'yii\base\*',
],
'except' => [
'yii\web\HttpException:404',
],
'logVars' => ['_GET', '_POST', '_COOKIE', '_SESSION', '_SERVER'],
],
],
],
]
自定义模式示范
namespace app\components;
use app\models\LanApi;
use Yii;
use yii\base\InvalidConfigException;
use yii\log\Target; /**
* DbTarget stores log messages in a database table.
*
*/
class LegccLogTarget extends Target
{
const CACHE_SENDTIME = 'legccLogTargetTime'; /**
* Initializes the DbTarget component.
* This method will initialize the [[db]] property to make sure it refers to a valid DB connection.
* @throws InvalidConfigException if [[db]] is invalid.
*/
public function init()
{
parent::init();
} /**
* Stores log messages to .Weixin
*/
public function export()
{
$cache = Yii::$app->cache;
$lastSendTime = intval($cache->get(self::CACHE_SENDTIME));
if((time() - $lastSendTime) < 100) {
return false;
}
$emailArray = ['']; foreach ($this->messages as $message) {
list($text, $level, $category, $timestamp) = $message;
if (!is_string($text)) {
if ($text instanceof \Throwable || $text instanceof \Exception){ $params =[$emailArray, '程序异常 '.date('Y-m-d H:i:s', $timestamp), $text->getMessage().'<br/>'.$text->getFile() . ' ' . $text->getLine()];
$result = MailQueue.addToQueue($params);//发送邮件,返回结果
if($result['code'] == 0) {
$cache->set(self::CACHE_SENDTIME, time());
}
}
}
}
}
}

邮件采用  yii\swiftmailer\Mailer

参考官网
http://www.yiiframework.com/doc-2.0/yii-log-logger.html
http://www.yiifans.com/yii2/guide/runtime-logging.html
http://www.yiiframework.com/doc-2.0/yii-log-target.html
http://www.cnblogs.com/yhdsir/p/5896820.html

备注 :yii migrate --migrationPath=@yii/log/migrations/ 需要进行数据库表的迁移

errorHandler:
参考
yii\base\Exception;
http://blog.csdn.net/dasgk/article/details/52180696

如果在web/index.php中defined('YII_DEBUG') or define('YII_DEBUG', true);
可以采用 可以在web.php中对excepiton的属性exceptionView重新定义 eg:
'components' => [
'errorHandler' => [
'errorAction' => 'site/error',
'exceptionView'=>'@app/views/site/error_exceptionView.php'
],
]
如果 设置为false ,直接调转到site/error的页面,在该页面可以通过excepiton的get方法获取相关内容。

关于yii2 的db log 日志 错误处理errorHandler的更多相关文章

  1. yii2使用 db log

    在本地测试的时候,输出log,还是输出到db中比较顺手. 配置过程: 1.加入log组件的配置: 'log' =>[ # 追踪级别 # 消息跟踪级别 # 在开发的时候,通常希望看到每个日志消息来 ...

  2. 转 -Filebeat + Redis 管理 LOG日志实践

    Filebeat + Redis 管理 LOG日志实践 小赵营 关注 2019.01.06 17:52* 字数 1648 阅读 24评论 0喜欢 2 引用 转载 请注明出处 某早上,领导怒吼声远远传来 ...

  3. (转)DB2 db2diag.log 日志分析

    DB2 db2diag.log 日志分析 原文:http://blog.csdn.net/lyjiau/article/details/52129997 db2diag.log是用来记录DB2数据库运 ...

  4. Atitit.log日志技术的最佳实践attilax总结

    Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...

  5. mysql general log日志

    注:应一直出现http://www.cnblogs.com/hwaggLee/p/6030765.html文章中的问题 故mysql general log日志.查看具体是什么命令导致的. 打开 ge ...

  6. Oracle怎样方便地查看报警日志错误

    由于报警日志文件很大,而每天都应该查看报警日志(查看有无“ORA-”,Error”,“Failed”等出错信息),故想找到一种比较便捷的方法,查看当天报警日志都有哪些错误. 在网上查了几天的资料,尝试 ...

  7. java中关于log日志

    博:http://zhw2527.iteye.com/blog/1006302 http://zhw2527.iteye.com/blog/1099658 在项目开发中,记录错误日志是一个很有必要功能 ...

  8. AOP 切面编程------JoinPoint ---- log日志

    AOP 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件 ...

  9. Android的log日志知识点剖析

    log类的继承结构 Log public final class Log extends Object java.lang.Object ↳ android.util.Log log日志的常用方法 分 ...

随机推荐

  1. Android通过用代码画虚线椭圆边框背景来学习一下shape的用法

    在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,shape可以绘制矩形环形以及椭圆,所以只需要用椭圆即可,在使用的时候将控件比如imageview或textview ...

  2. 《Cracking the Coding Interview》——第7章:数学和概率论——题目1

    2014-03-20 01:57 题目:玩篮球投篮,有两种玩法:要么1投1中,要么3投两中.你单次投篮中的概率是p,那么对于不同的p,哪种玩法胜率更高? 解法:第一种总是胜率更高,可以列不等式算算,结 ...

  3. CodeIgniter学习笔记一:基本结构、控制器、视图、超级对象、数据库

    一.基本结构 CodeIgniter3.0.0解压后有8个文件,分别是: application:项目文件 system:系统(框架)文件,为方便升级,不建议修改 user_guid:用户手册,不需要 ...

  4. .Net导出Word和Excel

    using System; using System.Collections.Generic; using System.Linq; using System.Web; public class Ex ...

  5. iphone 8 plus 红色特别版,突然自动关机无法启动

    今天早上我的iphone 8p 突然自己在床上闪动开机图标,闪了半个多小时它就光荣的自动关机了,我尝试了长按开机键,长按home+开机键15秒,通通木有用,它就是没!反!应! 于是找了售后,学到了正确 ...

  6. Python字符串的常用操作学习

    >>> name = "I love my job!" >>> name.capitalize() #首字母大写 'I love my job! ...

  7. LeetCode(一)

    Q&A ONE Given an array of integers, return indices of the two numbers such that they add up to a ...

  8. Java 多线程(Thread)学习

    多线程:就是进程的扩展,实现并发.一个进程可以包含多个线程,进程一般是由操作系统控制,而线程就是由程序员控制的,所以作为编程人员做好线程是我们的重点. 线程和进程一样分为五个阶段:创建.就绪.运行.阻 ...

  9. 【bzoj4870】[Shoi2017]组合数问题 dp+快速幂/矩阵乘法

    题目描述 输入 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 输出 一行一个整数 ...

  10. Codeforces - 220B Little Elephant and Array(莫队模板题)

    题意: m次查询.每次查询范围[L,R]中出现次数等于该数字的数字个数. 题解: 由于分块,在每次询问中,同一块时l至多移动根号n,从一块到另一块也是最多2倍根号n.对于r,每个块中因为同一块是按y排 ...