如何从 Monolog 消息中获取时间?
How do I get the time from Monolog message?
我将 Monolog v.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:我可以自己构建时间,但是最好删除整个Monolog项目并使用我自己的!
您正在尝试将 monolog 和通常是 PSR-3 记录器用于某些不应该以这种方式使用的东西...
monolog 内部发生的事情,或者更具体地说,在这种情况下,PSR-3 客户端发生的事情超出了您想要实现的范围。很可能您的业务领域说您需要为用户所做的操作存储记录。然后这样做。它没有说您要记录它,或者如果它确实说您需要记录这两个不应该混用。
此外,您不应该将 monolog 的内部功能与您需要向用户显示的内容混为一谈。
所以最后的解决方案是:
// $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
的一个抽象层..你违反了SOLID的Liskov Principle...如果以后去掉DB/StreamHandler会怎么样从你的独白?并用其他没有时间戳的东西替换它。
您的代码将失败。
我将 Monolog v.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:我可以自己构建时间,但是最好删除整个Monolog项目并使用我自己的!
您正在尝试将 monolog 和通常是 PSR-3 记录器用于某些不应该以这种方式使用的东西...
monolog 内部发生的事情,或者更具体地说,在这种情况下,PSR-3 客户端发生的事情超出了您想要实现的范围。很可能您的业务领域说您需要为用户所做的操作存储记录。然后这样做。它没有说您要记录它,或者如果它确实说您需要记录这两个不应该混用。
此外,您不应该将 monolog 的内部功能与您需要向用户显示的内容混为一谈。
所以最后的解决方案是:
// $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
的一个抽象层..你违反了SOLID的Liskov Principle...如果以后去掉DB/StreamHandler会怎么样从你的独白?并用其他没有时间戳的东西替换它。
您的代码将失败。