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)
.