沃毕尼闷兜率

沃毕尼闷兜率

这家伙有点懒,还没写个性签名!

  • 财富值30
  • 威望值0
  • 总积分90

个人信息

  • 翻遍了网上的各种教程,最后终于找到答案了

    什么情况下log日志会记录?是yii2原生的代码里写了:Yii::error();这种类似的打日志的代码,或者你自己在自己的业务逻辑里写Yii::error()

    不然都会有log日志

    而我这个问题,其实还没涉及到日志层面,因为只是一个exception,是一个报错,至于这个错误你到底写不写到日志里,那是需要你动手操作的。

    所以我看了下错误处理,里面有一个errorHandler,组件里面配置

        'errorHandler' => [
              'errorAction' => 'site/error',
          ]
    

    这样之后,每次exception报错,都会去到site控制器,actionArror方法,去渲染错误页面,在这个action里面

    Yii::error(Yii::$app->errorHandler->exception->getMessage());
    

    捕获异常,记录到日志上即可

    这样,凡是出现了异常,如果开了debug,就直接给你抛出了异常页面,如题中的截图
    如果关闭了debug,就会把这个exception的内容记录到日志里面去。

    完结,撒花!!

  • 总结问题就是:关闭debug的情况下,怎么获取exception报错?

  • 回复了 的回答

    可以尝试在 runtime\logs\app.log 日志文件中查找

    这里面找过了,没有,这个是一个Exception 不是日志,关闭debug就开不到Exception 了

  • 发表了说说
    以前超级排斥小部件,现在发觉真牛逼
  • 回复了 的评论

    一看就是技术思维写的文章,应该以产品的思维和角度来解释依赖注入的概念。简单直接告诉我们 yii2有了依赖注入前后,我们写代码发生的变化,以及带来的好处,然后再顺藤摸瓜,由表及里解释概念。而不是一开始就从底层说起,以这种反人类的方式去解释一些概念。

    说的很对,应该先把案例摆出来,提出问题,然后再说解决问题的方式,最后看代码的实现。看得云里雾里的,懂了一些概念,具体的实现逻辑还是没懂。

  • 这排版看得人蛋疼

  • 回复了 的回复

    观察者模式,与不用观察者模式相比,除了多写了一堆的代码,其他并没体现出什么好处。

    具体以你讲的例子来说:

    但是,当系统变大的时候,这种方法马上面临难以扩展的问题,并且容易出错。
    比如老王不想订阅了,我们需要改源代码。
    比如又增加了一个客户,我们要去改源代码。
    比如xxx,我们都需要改源代码。
    这两个对象的耦合度太高了。

    $model = new Video();
    $model->attach(new LaoWang());
    $model->attach(new XiaoLi());
    $model->attach(new ChuanPu());
    $model->attach(new BingBing());
    $model->new();

    $model = new Video();
    $model->new();
    LaoWang::update($model);
    XiaoLi::update($model);
    ChuanPu::update($model);
    BingBing::update($model);

    两个代码相比,

    前者观察者模式,并没有解决上面作者自己所提出来的那些问题:有需求变动,还是要改代码的,如果仔细看看,反而是观察者模式情况下,改动的代码还要更多

    具体来说(还是借用作者的例子):

    “当我们再增加一个人加入 习大大 的时候,我们只需要增加一个习大大的观察者类,在实现的时候添加注册,而不需要去改Video类和其他的观察者类,将类之间的耦合降低了很多”

    这里说了,增加习大大: 一要增加类,二要注册,其实还有个三,就是得触发。好处呢,是:不用改其他观察者类。

    那么,不用观察者模式,如何?其实一样嘛,一要增加类,二是要调用。没了。是不是更简单?
    上面说的好处:不用改其他类,普通的调用一样不用改其他类嘛,所以这个好处也不是优势,不存在的

    不知道作者如何解释。

    层主质疑得很好,好处应该有,但是真心没有说出来。
    我觉得好处应该是:避免污染主逻辑!
    未使用观察者模式,其实是面向过程式编程,某个逻辑改动会影响到整个逻辑的删减
    使用观察者模式,其实是面向对象了,具体的观察者和被观察者的交互已经写好了(foreach遍历),重点只是注意一下观察者的删减即可,不会影响到主逻辑

  • 赞了回复

    观察者模式,与不用观察者模式相比,除了多写了一堆的代码,其他并没体现出什么好处。

    具体以你讲的例子来说:

    但是,当系统变大的时候,这种方法马上面临难以扩展的问题,并且容易出错。
    比如老王不想订阅了,我们需要改源代码。
    比如又增加了一个客户,我们要去改源代码。
    比如xxx,我们都需要改源代码。
    这两个对象的耦合度太高了。

    $model = new Video();
    $model->attach(new LaoWang());
    $model->attach(new XiaoLi());
    $model->attach(new ChuanPu());
    $model->attach(new BingBing());
    $model->new();

    $model = new Video();
    $model->new();
    LaoWang::update($model);
    XiaoLi::update($model);
    ChuanPu::update($model);
    BingBing::update($model);

    两个代码相比,

    前者观察者模式,并没有解决上面作者自己所提出来的那些问题:有需求变动,还是要改代码的,如果仔细看看,反而是观察者模式情况下,改动的代码还要更多

    具体来说(还是借用作者的例子):

    “当我们再增加一个人加入 习大大 的时候,我们只需要增加一个习大大的观察者类,在实现的时候添加注册,而不需要去改Video类和其他的观察者类,将类之间的耦合降低了很多”

    这里说了,增加习大大: 一要增加类,二要注册,其实还有个三,就是得触发。好处呢,是:不用改其他观察者类。

    那么,不用观察者模式,如何?其实一样嘛,一要增加类,二是要调用。没了。是不是更简单?
    上面说的好处:不用改其他类,普通的调用一样不用改其他类嘛,所以这个好处也不是优势,不存在的

    不知道作者如何解释。

职场新人 等级规则
90/100
资料完整度
10/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

0

Ta的访客

1