public function __construct() { parent::__construct('Mesamatrix CLI', \Mesamatrix::$config->getValue('info', 'version')); $dispatcher = new EventDispatcher(); // Install CLI logger $dispatcher->addListener(ConsoleEvents::COMMAND, function (ConsoleCommandEvent $e) { $logger = new \Monolog\Logger('cli.' . $e->getCommand()->getName(), \Mesamatrix::$logger->getHandlers()); $logger->pushHandler(new \Symfony\Bridge\Monolog\Handler\ConsoleHandler($e->getOutput())); \Mesamatrix::$logger = $logger; }); $this->setDispatcher($dispatcher); }
public static function init() { date_default_timezone_set('UTC'); $dir = str_replace("\\", '/', __DIR__); self::$serverRoot = implode('/', array_slice(explode('/', $dir), 0, -1)); self::$autoloader = (require self::path('vendor/autoload.php')); self::$logger = new Logger('logger'); self::$logger->pushHandler(new ErrorLogHandler(ErrorLogHandler::OPERATING_SYSTEM, Logger::NOTICE)); ErrorHandler::register(self::$logger); self::$configDir = self::path('config'); self::$config = new \Mesamatrix\Config(self::$configDir); // attempt to create the private dir $privateDir = self::path(self::$config->getValue('info', 'private_dir')); if (!is_dir($privateDir)) { mkdir($privateDir); } // register the log file $logLevel = self::$config->getValue('info', 'log_level', Logger::WARNING); $logPath = $privateDir . '/mesamatrix.log'; if (!file_exists($logPath) && is_dir($privateDir)) { touch($logPath); } if (is_writable($logPath)) { self::$logger->popHandler(); self::$logger->pushHandler(new StreamHandler($logPath, $logLevel)); } else { self::$logger->error('Error log ' . $logPath . ' is not writable!'); } if ($logLevel < Logger::INFO) { ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); } // initialise request self::$request = HTTPRequest::createFromGlobals(); self::$logger->debug('Base initialisation complete'); }