我已经搜索了SilverStripe 4的文档和API,但是我在使用相应的类调用默认的异常处理程序时遇到了麻烦。
在我的Page.php控制器的init()
中SilverStripe 4之前的工作原理 parent::init();
set_exception_handler(function($exception) {
if( get_class($exception) == 'CustomException' ) {
Controller::curr()->handleCustomException($exception);
}
return exceptionHandler($exception);
});
我期望它如何与SilverStripe 4一起使用
parent::init();
set_exception_handler(function($exception) {
if( get_class($exception) == 'CustomException' ) {
Controller::curr()->handleCustomException($exception);
}
return <SomeMonologClass>::handleException($exception);
});
我现在知道SilverStripe 4正在使用Monolog而且我遇到handleException
函数,我认为这是我需要调用的函数,而不是exceptionHandler($exception)
。
非常感谢任何建议。
答案 0 :(得分:1)
use SilverStripe\Control\Controller;
class MyController extends Controller
{
private static $dependencies = [
'logger' => '%$Psr\Log\LoggerInterface',
];
// This will be set automatically, as long as MyController is instantiated via Injector
public $logger;
protected function init()
{
$this->logger->debug("MyController::init() called");
parent::init();
}
}
如下所述:
此处有更多信息:https://www.silverstripe.org/learn/lessons/v4/advanced-environment-configuration-1