config->get('logger.handlerList') ?? null; if ($handlerDataList) { $level = $this->config->get('logger.level'); $handlerList = $this->handlerListLoader->load($handlerDataList, $level); } else { $handlerList = [$this->createDefaultHandler()]; } foreach ($handlerList as $handler) { $log->pushHandler($handler); } $errorHandler = new MonologErrorHandler($log); $errorHandler->registerExceptionHandler([], false); $errorHandler->registerErrorHandler([], false); return $log; } private function createDefaultHandler(): HandlerInterface { $path = $this->config->get('logger.path') ?? self::PATH; $rotation = $this->config->get('logger.rotation') ?? true; $level = $this->config->get('logger.level') ?? self::DEFAULT_LEVEL; $levelCode = Logger::toMonologLevel($level); if ($rotation) { $maxFileNumber = $this->config->get('logger.maxFileNumber') ?? self::MAX_FILE_NUMBER; $handler = new EspoRotatingFileHandler($this->config, $path, $maxFileNumber, $levelCode, true); } else { $handler = new EspoFileHandler($this->config, $path, $levelCode, true); } $formatter = new LineFormatter( self::LINE_FORMAT, self::DATE_FORMAT, false, true ); $handler->setFormatter($formatter); return $handler; } }