public function testResolveMonolog() { $monolog = new Monolog(); $log = new Logger('name'); $log->pushHandler($monolog); $monolog->setDispatcher($this->process->getDispatcher()); $this->profiler->setLogger($monolog); $log->addError('Bar'); $this->profiler->alert('FooBar'); $this->assertInstanceOf(\Generator::class, $this->datasource->getProcess($this->process->getId())); }
/** * @param array $options * @return Profiler * * @throws \RuntimeException * @throws AccessException * @throws UndefinedOptionsException * @throws MissingOptionsException * @throws InvalidOptionsException * @throws NoSuchOptionException * @throws OptionDefinitionException */ public function create(array $options = []) { $options = $this->resolveOptions($options); if (!$options[self::OPTION_ENABLE]) { return new NullProfiler(); } if ($options[self::OPTION_ENVIRONMENT] !== null) { Profiler::$environment = $options[self::OPTION_ENVIRONMENT]; } $profiler = new Profiler(); switch ($options[self::OPTION_DATASOURCE_CLASS]) { default: case File::class: $datasource = new File($options[self::OPTION_DATASOURCE_PROFILES_FOLDER]); break; case Memory::class: $datasource = new Memory(); } $profiler->setDataSource($datasource); $profiler->registerCollectorClasses($options[self::OPTION_COLLECTORS]); $dispatcher = $profiler->getContext()->getProcess()->getDispatcher(); $className = $options['logger']; $logger = new $className(); $logger->setDispatcher($dispatcher); $profiler->setLogger($logger); $profiler->setTimeline(new TimelineComponent($dispatcher)); return $profiler; }