我应该如何在日志文件中写入错误或我想从实体类中发送的消息? 这个想法是这样的:我有一些具有一些属性的项目以及具有一些属性的配置。我需要检查项目是否具有配置属性中也存在的属性。当我调试我的应用程序时,我在某处:
public function getProperty(idProperty $propertyId)
{
$properties = $this->ItemProperties();
if (isset($properties[$propertyId->getValue()])) {
return $properties[$propertyId->getValue()];
}else{
//here I want to write in the log file that the propertyId is not in the $properties.
}
return null;
}
那我怎么能实现呢?谢谢。
答案 0 :(得分:1)
您可以抛出 $?<sh> = ( $?<real> & 0x7F ) ? ( $?<real> | 0x80 ) : ( $?<real> >> 8 );
并设置Exception
,这将写入日志。
内部实体:
Exception Listener
在Listener类中:
if (isset($properties[$propertyId->getValue()])) {
return $properties[$propertyId->getValue()];
} else {
throw new DomainException('Something is wrong.' . print_r($this, true));
}
services.yml
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function onKernelException(GetResponseForExceptionEvent $event)
{
$e = $event->getException();
if ($e instanceof DomainException) {
$this->logger->warning('Exception ' . get_class($e) , ['message' => $e->getMessage()]);
$event->setResponse(
new JsonResponse(['error' => $e->getMessage()], 400)
);
Symfony Events。
您也可以将 app.exception_listener:
class: Application\Listeners\ExceptionListener
arguments: ['@domain.logger']
tags:
- { name: kernel.event_listener, event: kernel.exception }
注入您的实体并从那里写入日志,但它违反了单一责任原则。
<强>更新强>
Logger
是一个简单的类,继承自DomainException
。在此示例中,仅用于区分您的自定义异常以及PHP或其他库抛出的异常。
它还可以包含其他功能,例如,在构造函数中接受两条消息,将其中一条消息写入日志文件,然后为您的用户输出另一条消息。