public function testItIsUsableThroughPluginInstance() { /** @var \Wplog\Plugin $plugin */ $plugin = \Wplog\wplog(); /** @var \Wplog\Logging\InternalLogger $logger */ $logger = $plugin->internalLogger(); $this->assertInstanceOf(InternalLogger::class, $logger); }
/** * Catch-all log method. * * @fixme Validate log rotation needs and log size limits. * * @since 0.1.0 * * @param String $level Log level (PSR). * @param String $message Log message. * @param mixed[] $context Log message context. * @param \Wplog\Events\Event|null $event Event we're currently logging. * * @return Boolean */ public function log($level, $message, array $context = [], Event $event = null) : bool { try { if ($event === null) { throw new \InvalidArgumentException('No event given for file logger logging method.'); } file_put_contents($this->logFile, (string) $event . "\n", FILE_APPEND); return true; } catch (\Exception $e) { \Wplog\wplog()->internalLogger()->error('Could not log using file logger: ' . $e->getMessage()); return false; } }
/** * Handle and log the events this handler has listened to. * * @since 0.1.0 * @access protected * @return void */ public function handleEvents() { if (empty($this->listenerEvents)) { return; } // Prune null events. $this->listenerEvents = array_filter($this->listenerEvents, function ($eventObject) { return !$eventObject instanceof NullEvent; }); foreach ($this->listenerEvents as $event) { try { $this->loggerCollection->write($event); } catch (\Throwable $t) { \Wplog\wplog()->internalLogger()->alert('Could not write log entry: {msg}', ['msg' => $t->getMessage()]); } } }