diff --git a/app/modules/web/Controllers/ConfigManagerController.php b/app/modules/web/Controllers/ConfigManagerController.php index 3fcae8b9..3fb21454 100644 --- a/app/modules/web/Controllers/ConfigManagerController.php +++ b/app/modules/web/Controllers/ConfigManagerController.php @@ -34,7 +34,7 @@ use SP\Http\Request; use SP\Modules\Web\Controllers\Helpers\TabsHelper; use SP\Mvc\View\Components\DataTab; use SP\Mvc\View\Components\SelectItemAdapter; -use SP\Providers\Log\LogHandler; +use SP\Providers\Log\DatabaseLogHandler; use SP\Providers\Mail\MailHandler; use SP\Services\Account\AccountService; use SP\Services\Config\ConfigService; @@ -147,7 +147,7 @@ class ConfigManagerController extends ControllerBase $template->assign('userGroups', SelectItemAdapter::factory(UserGroupService::getItemsBasic())->getItemsFromModel()); $template->assign('userProfiles', SelectItemAdapter::factory(UserProfileService::getItemsBasic())->getItemsFromModel()); - $template->assign('logEvents', SelectItemAdapter::factory(LogHandler::EVENTS) + $template->assign('logEvents', SelectItemAdapter::factory(DatabaseLogHandler::EVENTS) ->getItemsFromArraySelected($this->configData->getLogEvents(), true) ); diff --git a/lib/SP/Core/Events/EventDispatcherBase.php b/lib/SP/Core/Events/EventDispatcherBase.php index 58510acb..f63412e5 100644 --- a/lib/SP/Core/Events/EventDispatcherBase.php +++ b/lib/SP/Core/Events/EventDispatcherBase.php @@ -44,9 +44,11 @@ abstract class EventDispatcherBase implements EventDispatcherInterface * Attach an SplObserver * * @link http://php.net/manual/en/splsubject.attach.php + * * @param SplObserver $observer

* The SplObserver to attach. *

+ * * @since 5.1.0 */ public function attach(SplObserver $observer) @@ -67,9 +69,11 @@ abstract class EventDispatcherBase implements EventDispatcherInterface * Detach an observer * * @link http://php.net/manual/en/splsubject.detach.php + * * @param SplObserver $observer

* The SplObserver to detach. *

+ * * @throws InvalidClassException * @since 5.1.0 */ @@ -109,8 +113,8 @@ abstract class EventDispatcherBase implements EventDispatcherInterface foreach ($this->observers as $observer) { $events = $observer->getEventsString(); - if ($events === '*' - || preg_match('/' . $events . '/i', $eventType) + if (!empty($events) + && ($events === '*' || preg_match('/' . $events . '/i', $eventType)) ) { // FIXME: update receivers Event $observer->updateEvent($eventType, $event); diff --git a/lib/SP/Core/ModuleBase.php b/lib/SP/Core/ModuleBase.php index ec3856db..04524ceb 100644 --- a/lib/SP/Core/ModuleBase.php +++ b/lib/SP/Core/ModuleBase.php @@ -30,7 +30,7 @@ use SP\Bootstrap; use SP\Config\Config; use SP\Core\Context\ContextInterface; use SP\Core\Events\EventDispatcher; -use SP\Providers\Log\LogHandler; +use SP\Providers\Log\DatabaseLogHandler; use SP\Providers\Log\RemoteSyslogHandler; use SP\Providers\Log\SyslogHandler; use SP\Providers\Mail\MailHandler; @@ -118,7 +118,8 @@ abstract class ModuleBase $eventDispatcher = $this->container->get(EventDispatcher::class); if ($this->configData->isLogEnabled()) { - $eventDispatcher->attach($this->container->get(LogHandler::class)); + $eventDispatcher->attach($this->container->get(DatabaseLogHandler::class)); +// $eventDispatcher->attach($this->container->get(FileLogHandler::class)); } if ($this->configData->isMailEnabled()) { diff --git a/lib/SP/Providers/Log/LogHandler.php b/lib/SP/Providers/Log/DatabaseLogHandler.php similarity index 83% rename from lib/SP/Providers/Log/LogHandler.php rename to lib/SP/Providers/Log/DatabaseLogHandler.php index bcad96af..aca58785 100644 --- a/lib/SP/Providers/Log/LogHandler.php +++ b/lib/SP/Providers/Log/DatabaseLogHandler.php @@ -24,8 +24,6 @@ namespace SP\Providers\Log; -use Monolog\Handler\SyslogHandler; -use Monolog\Logger; use SP\Core\Events\Event; use SP\Core\Events\EventReceiver; use SP\DataModel\EventlogData; @@ -39,7 +37,7 @@ use SplSubject; * * @package SP\Providers\Log */ -class LogHandler extends Provider implements EventReceiver +class DatabaseLogHandler extends Provider implements EventReceiver { use EventsTrait; @@ -146,28 +144,6 @@ class LogHandler extends Provider implements EventReceiver return self::EVENTS; } - /** - * @param string $eventType - * @param Event $event - */ - protected function sendToSyslog($eventType, Event $event) - { - $logger = $this->dic->get(Logger::class); - $logger->pushHandler(new SyslogHandler('syspass')); - $logger->info($eventType . ';' . $event->getEventMessage()->composeText(';')); - } - - /** - * @param string $eventType - * @param Event $event - */ - protected function sendToRemoteSyslog($eventType, Event $event) - { - $logger = $this->dic->get(Logger::class); - $logger->pushHandler(new SyslogHandler('syspass')); - $logger->info($eventType . ';' . $event->getEventMessage()->composeText(';')); - } - protected function initialize() { $this->eventlogService = $this->dic->get(EventlogService::class); diff --git a/lib/SP/Providers/Log/FileLogHandler.php b/lib/SP/Providers/Log/FileLogHandler.php new file mode 100644 index 00000000..513587d6 --- /dev/null +++ b/lib/SP/Providers/Log/FileLogHandler.php @@ -0,0 +1,113 @@ +. + */ + +namespace SP\Providers\Log; + + +use SP\Core\Events\Event; +use SP\Core\Events\EventReceiver; +use SP\Providers\EventsTrait; +use SP\Providers\Provider; +use SplSubject; + +/** + * Class FileLogHandler + * + * @package SP\Providers\Log + */ +class FileLogHandler extends Provider implements EventReceiver +{ + use EventsTrait; + + const EVENTS = [ + 'database.', + 'exception' + ]; + + /** + * @var string + */ + protected $events; + + /** + * Inicialización del observador + */ + public function init() + { + // TODO: Implement init() method. + } + + /** + * Evento de actualización + * + * @param string $eventType Nombre del evento + * @param Event $event Objeto del evento + */ + public function updateEvent($eventType, Event $event) + { + debugLog($event->getEventMessage()->composeText(';')); + } + + /** + * Devuelve los eventos que implementa el observador + * + * @return array + */ + public function getEvents() + { + return self::EVENTS; + } + + /** + * Devuelve los eventos que implementa el observador en formato cadena + * + * @return string + */ + public function getEventsString() + { + return $this->events; + } + + /** + * Receive update from subject + * + * @link http://php.net/manual/en/splobserver.update.php + * + * @param SplSubject $subject

+ * The SplSubject notifying the observer of an update. + *

+ * + * @return void + * @since 5.1.0 + */ + public function update(SplSubject $subject) + { + // TODO: Implement update() method. + } + + protected function initialize() + { + $this->events = $this->parseEventsToRegex(self::EVENTS); + } +} \ No newline at end of file