截斷是由Guzzle庫完成的。它只顯示響應的前120個字符。我假設這是因爲答覆可能會很長。
如果您希望看到完整的消息,您應該能夠自定義如何處理異常。
更新report()
方法在app/Exceptions/Handler.php
喜歡的東西:
public function report(Exception $exception)
{
// this is from the parent method
if ($this->shouldntReport($exception)) {
return;
}
// this is from the parent method
try {
$logger = $this->container->make(\Psr\Log\LoggerInterface::class);
} catch (Exception $ex) {
throw $exception; // throw the original exception
}
// this is the new custom handling of guzzle exceptions
if ($exception instanceof \GuzzleHttp\Exception\RequestException) {
// get the full text of the exception (including stack trace),
// and replace the original message (possibly truncated),
// with the full text of the entire response body.
$message = str_replace(
rtrim($exception->getMessage()),
(string) $exception->getResponse()->getBody(),
(string) $exception
);
// log your new custom guzzle error message
return $logger->error($message);
}
// make sure to still log non-guzzle exceptions
$logger->error($exception);
}
注:這是在report
方法完成的,因此它僅影響被寫入日誌。如果異常被轉儲到終端或瀏覽器,它仍將顯示被截斷的消息。
我做了一些調整......問題是,$消息=(字符串)$Ë確實包含堆棧跟蹤。 substr($ msg,0,-135)將不起作用。要讀取結果,現在已經在錯誤信息的底部讀取了,在棧跟蹤的底部,實際上 – Toskan
@Toskan你是對的,原來的實現是不正確的(正如我已經注意到的那樣,它沒有經過測試)。我修正了代碼,並且實際測試了它,所以它應該按原樣工作。我也改變了它,以便它將繼續包含堆棧跟蹤,而原始算法的設計使得只有消息沒有堆棧跟蹤就會被記錄下來。 – patricus