代码之家  ›  专栏  ›  技术社区  ›  centurian

如何从monog消息中获取时间?

  •  0
  • centurian  · 技术社区  · 6 年前

    我把monogv.1.24.0添加到我的项目中。

    创建记录器:

    $logger = new Logger('db');
    $logger->setTimezone(DateTime::getTimezone()); 
    $logger->pushHandler(new StreamHandler(ROOT.'/log/db.log', Logger::DEBUG, 600));
    

    现在,在代码后面的某个时刻,我构造了一条消息并将其发送到浏览器:

    // $result contains my array
    $tmp = \json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRESERVE_ZERO_FRACTION | JSON_UNESCAPED_SLASHES);
    echo $tmp;
    $logger->notice($tmp);
    

    我的问题是我想提取存储在 db.log 包括用户的回音。

    怎么可能呢?

    PS:我可以自己构建时间,但是最好是删除整个独白项目,用我自己的!

    1 回复  |  直到 6 年前
        1
  •  0
  •   gmponos    6 年前

    你正在尝试使用monog和一个psr-3记录器来做一些不打算用这种方式使用的事情…

    在monog内部发生的事情,或者在本例中更具体地说,发生在psr-3客户机上的事情,超出了您试图实现的范围。很可能您的业务域说您需要存储用户所做操作的记录。那就这么做。它没有说你想记录它,或者如果它说你需要记录它,这两个不应该混合。

    此外,您不应该将monog内部的功能与需要向用户显示的功能混合在一起。

    因此,最终的解决方案是:

    // $result contains my array
    $tmp = \json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRESERVE_ZERO_FRACTION | JSON_UNESCAPED_SLASHES);
    echo $tmp;
    
    //
    // write here custom code that saves my $msg where ever I need to and that it contains also the timestamp
    //
    
    // Then come here and log that my record is saved..
    $logger->notice('Record is saved');
    

    您必须了解logger是 LOGGING …你违反了里斯科夫的固体定律…如果将来从monog中删除db/stream处理程序,会发生什么情况?并用其他没有时间戳的东西替换它。

    你的代码会失败的。

    推荐文章