我無法用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我被編輯回答記錄跟蹤 –