Magento 1では、例外をキャッチして、exception.log
ファイルにログを記録することができました。Mage::logException($e);
今、Magento 2では、できますcatch (\Exception $e)
が、キャッチされた例外をどうすればいいですか?にログインするにはどうすればよいexception.log
ですか?または、これを処理する一般的な方法は何ですか?
Magento 1では、例外をキャッチして、exception.log
ファイルにログを記録することができました。Mage::logException($e);
今、Magento 2では、できますcatch (\Exception $e)
が、キャッチされた例外をどうすればいいですか?にログインするにはどうすればよいexception.log
ですか?または、これを処理する一般的な方法は何ですか?
回答:
例外のロギングを開始する最も簡単な方法はPsr\Log\LoggerInterface
、クラスのコンストラクターを挿入することです。
private $logger;
public function __construct(\Psr\Log\LoggerInterface $logger)
{
$this->logger = $logger;
}
そして、あなたのcatch
声明で:
public function doSomething()
{
try {
/* Some logic that could throw an Exception */
} catch (\Exception $e) {
$this->logger->critical($e->getMessage());
}
}
例外がキャッチされた後の対応方法に関連する他のことは、M1とM2の間で違いはありません。また、戦略は、例外処理のユースケースに非常に固有です。
critical()
代わりの方法をdebug()
Magento2には、さまざまなタイプの例外ハンドラーがあります。例:
StateException
InputException
InvalidEmailOrPasswordException
MailException
NotFoundException
ValidatorException
等。
すべてのハンドラタイプとそのクラスはに存在し\vendor\magento\framework\Exception
ます。
要件に関連する例外ハンドラを選択して使用する必要があります。
$this->logger->debug($e)
。