AppserverIo\Appserver\Core\LoggerFactory::factory PHP Метод

factory() публичный статический Метод

Creates a new logger instance based on the passed logger configuration.
public static factory ( object $loggerNode ) : Psr\Log\LoggerInterface
$loggerNode object The logger configuration
Результат Psr\Log\LoggerInterface The logger instance
    public static function factory($loggerNode)
    {
        // initialize the processors
        $processors = array();
        /** @var \AppserverIo\Appserver\Core\Api\Node\ProcessorNode $processorNode */
        foreach ($loggerNode->getProcessors() as $processorNode) {
            $reflectionClass = new \ReflectionClass($processorNode->getType());
            $processors[] = $reflectionClass->newInstanceArgs($processorNode->getParamsAsArray());
        }
        // initialize the handlers
        $handlers = array();
        /** @var \AppserverIo\Appserver\Core\Api\Node\HandlerNode $handlerNode */
        foreach ($loggerNode->getHandlers() as $handlerNode) {
            // initialize the handler node
            $reflectionClass = new \ReflectionClass($handlerNode->getType());
            $handler = $reflectionClass->newInstanceArgs($handlerNode->getParamsAsArray());
            // if we've a formatter, initialize the formatter also
            if ($formatterNode = $handlerNode->getFormatter()) {
                $reflectionClass = new \ReflectionClass($formatterNode->getType());
                $handler->setFormatter($reflectionClass->newInstanceArgs($formatterNode->getParamsAsArray()));
            }
            // add the handler
            $handlers[] = $handler;
        }
        // prepare the logger params
        $loggerParams = array($loggerNode->getChannelName(), $handlers, $processors);
        $loggerParams = array_merge($loggerParams, $loggerNode->getParamsAsArray());
        // initialize the logger instance itself
        $reflectionClass = new \ReflectionClass($loggerNode->getType());
        $loggerInstance = $reflectionClass->newInstanceArgs($loggerParams);
        // return the instance
        return $loggerInstance;
    }

Usage Example

 /**
  * Handle an event.
  *
  * @param \League\Event\EventInterface $event The triggering event
  *
  * @return void
  * @see \League\Event\ListenerInterface::handle()
  */
 public function handle(EventInterface $event)
 {
     try {
         // load the application server, naming directory and system configuration instance
         /** @var \AppserverIo\Appserver\Core\Interfaces\ApplicationServerInterface $applicationServer */
         $applicationServer = $this->getApplicationServer();
         /** @var \AppserverIo\Psr\Naming\NamingDirectoryInterface $namingDirectory */
         $namingDirectory = $applicationServer->getNamingDirectory();
         /** @var \AppserverIo\Appserver\Core\Interfaces\SystemConfigurationInterface $systemConfiguration */
         $systemConfiguration = $applicationServer->getSystemConfiguration();
         // initialize the loggers
         $loggers = array();
         foreach ($systemConfiguration->getLoggers() as $loggerNode) {
             $loggers[$loggerNode->getName()] = LoggerFactory::factory($loggerNode);
         }
         // register the logger callbacks in the naming directory
         foreach ($loggers as $name => $logger) {
             $namingDirectory->bind(sprintf('php:global/log/%s', $name), $logger);
         }
         // set the initialized loggers finally
         $applicationServer->setLoggers($loggers);
     } catch (\Exception $e) {
         $applicationServer->getSystemLogger()->error($e->__toString());
     }
 }
All Usage Examples Of AppserverIo\Appserver\Core\LoggerFactory::factory
LoggerFactory