我无法用log4php记录“TypeError”。我怀疑这是因为我最近从php 5.5升级到7.1。log4php + PHP 7 - 捕获和日志记录可丢失
通常情况下,我的语法如下:
<?
use Logger;
class MyClass
{
/** @var Logger */
private $logger;
function __construct(array $configParams)
{
Logger::configure('logger.xml');
$this->logger = Logger::getLogger(__CLASS__);
}
public function dostuff()
{
try
{
// ...
}
catch (Exception $ex)
{
$this->logger->error("ERROR CAUGHT", $ex);
}
}
}
?>
上述语法将打印大量的信息的日志文件,包括堆栈跟踪。然而,在阅读最新的php7文档后,我相信我的意图是处理\ Throwable接口,以便捕获错误和异常(这很好)。所以我用以下内容替换上述陷阱:
catch (\Throwable $ex)
这仍然打印堆栈跟踪信息为我的异常,但是当一个“类型错误”被捉住,没有被打印到日志文件。
我认为这是由于log4php不知道如何记录错误。如何以通用的方式使用log4php记录错误?
感谢,
但是没有堆栈跟踪:( – mils
@mils我被编辑回答记录跟踪 –