public function getLogger() { $settings = $this->ci->get('settings')['logger']; $handler = new \Monolog\Handler\RotatingFileHandler($settings['path']); $formatter = new \Monolog\Formatter\LineFormatter(); $formatter->ignoreEmptyContextAndExtra(); $handler->setFormatter($formatter); $logger = new \Monolog\Logger($settings['name']); $logger->pushHandler($handler); return $logger; }
public function testProvidingNullLineFormatToGetMonologDefault() { $logfileName = 'nullFormatterTest.log'; $this->cleanUpLogFile($logfileName); $command = $this->registerCommand(new LoggingCommand()); EncapsulationViolator::invokeMethod($command, 'setLogFilename', array($logfileName)); EncapsulationViolator::invokeMethod($command, 'setConsoleLogLineFormat', array(null)); EncapsulationViolator::invokeMethod($command, 'setFileLogLineFormat', array(null)); $commandTester = $this->executeCommand($command); // Generate what the default format looks like $lineFormatter = new \Monolog\Formatter\LineFormatter(null); $record = array('message' => 'The quick brown fox jumps over the lazy dog', 'context' => array(), 'level' => Logger::EMERGENCY, 'level_name' => Logger::getLevelName(Logger::EMERGENCY), 'channel' => $command->getLogger()->getName(), 'datetime' => new \DateTime('1970-01-01 00:00:00'), 'extra' => array()); $exampleLine = $lineFormatter->format($record); $exampleLine = trim(str_replace('[1970-01-01 00:00:00]', '', $exampleLine)); // strip out date as this wont match // Test console format $this->assertRegExp('/' . $exampleLine . '/', $commandTester->getDisplay(), 'Console log line format does not seem to match the Monolog default'); // Test default logfile format $this->assertRegExp('/' . $exampleLine . '/', $this->getLogfileContents($logfileName), 'File log line format does not seem to match the Monolog default'); $this->cleanUpLogFile($logfileName); }
public function format(array $record) { $record['padded_level'] = str_pad($record['level_name'], 8); $record['message'] = str_replace("\n", "\n ", $record['message']); $output = parent::format($record); if (dbsteward::$ENABLE_COLOR) { $c = new Color($output); switch ($record['level']) { case Logger::DEBUG: $c->dark_gray(); break; case Logger::WARNING: $c->yellow(); break; case Logger::ERROR: $c->red(); break; } return $c . PHP_EOL; } else { return $output . PHP_EOL; } }
<?php // DIC configuration $container = $app->getContainer(); // Logger $container['logger'] = function ($c) { $config = $c->settings['Monolog']; $logger = new Monolog\Logger($config['loggerName']); $logger->pushProcessor(new Monolog\Processor\UidProcessor()); $formatter = new Monolog\Formatter\LineFormatter(); $formatter->includeStacktraces(); if (true === $config['StreamHandler']['enable']) { $handler = new Monolog\Handler\StreamHandler(VAR_PATH . '/log/app-' . date('Y-m') . '.log', $config['StreamHandler']['logLevel']); $handler->setFormatter($formatter); $logger->pushHandler($handler); } if (true === $config['NativeMailerHandler']['enable'] && '' != $config['NativeMailerHandler']['to']) { $handler = new Monolog\Handler\NativeMailerHandler($config['NativeMailerHandler']['to'], $config['NativeMailerHandler']['subject'], $config['NativeMailerHandler']['from'], $config['NativeMailerHandler']['logLevel']); $handler->setFormatter($formatter); $logger->pushHandler($handler); } return $logger; }; // View renderer $container['renderer'] = function ($c) { $config = $c->settings['Twig']; $path = $config['templatesPath']; unset($config['templatesPath']); $twig = new Slim\Views\Twig($path, $config); $twig->addExtension(new Slim\Views\TwigExtension($c->router, $c->request->getUri())); $twig['config'] = $c->settings['App'];
protected function getMautic_Monolog_Fulltrace_FormatterService() { $this->services['mautic.monolog.fulltrace.formatter'] = $instance = new \Monolog\Formatter\LineFormatter(); $instance->includeStacktraces(true); return $instance; }
public function register(Pimple\Container $c) { include __DIR__ . '/../local/config.php'; foreach ($env as $envk => $envval) { $c["config/{$envk}"] = $envval; } $c['routes'] = ['/' => 'route/index', '/test', '/index', '/form', '/exception']; $c['entityManager'] = function ($c) { $config = Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration(array(__DIR__ . "/orm"), $c['config/devVersion']); $conn = $c['config/databases']['default']; return Doctrine\ORM\EntityManager::create($conn, $config); }; $c['dispatcher'] = function ($c) { $routes = $c['routes']; $dispatcher = FastRoute\simpleDispatcher(function (FastRoute\RouteCollector $r) use($routes) { foreach ($routes as $k => $v) { if (is_int($k)) { $k = $v; $v = "route{$v}"; } $r->addRoute('*', $k, $v); } }); return $dispatcher; }; $c['request'] = function ($c) { $req = Zend\Diactoros\ServerRequestFactory::fromGlobals($_SERVER, $_GET, $_POST, $_COOKIE, $_FILES); $c['logger']->notice('Started ' . $req->getMethod() . ' ' . $req->getUri()->getPath()); return $req; }; $c['resource'] = function ($c) { $dispatcher = $c['dispatcher']; $request = $c['request']; $uri = $request->getUri(); $path = $uri->getPath(); if (preg_match("|^(.+)\\..+\$|", $path, $matches)) { //if path ends in .json, .html, etc, ignore it $path = $matches[1]; } $res = $dispatcher->dispatch('*', $path); if ($res[0] == FastRoute\Dispatcher::NOT_FOUND) { throw new WebAppRouteNotFoundException("Route '{$path}' not found on routing table"); } $reqParameters = $res[2]; $c['requestParameters'] = $reqParameters; $entry = $res[1]; if (!isset($c[$entry])) { throw new WebAppResourceNotFoundException("Resource '{$entry}' not found on DI container"); } $res = $c[$entry]; $c['logger']->notice("Resource Selected ({$entry}): " . get_class($res)); return $res; }; $c['response'] = function ($c) { try { $resource = $c['resource']; return $resource->exec(); } catch (Exception $e) { return $c['handleException']($e); } }; $c['templaterFactory'] = function ($c) { $temp = new ExampleApp\templater\SampleTemplaterFactory(); $temp->globalContext = ['url' => $c['config/publicUrl'], 'assetsUrl' => $c['config/assetsUrl']]; return $temp; }; $c['responseFactory'] = function ($c) { $respFactory = new Resourceful\ResponseFactory(); $respFactory->templaterFactory = $c['templaterFactory']; return $respFactory; }; $c['responseEmitter'] = function ($c) { return new Zend\Diactoros\Response\SapiEmitter(); }; $c['session'] = function ($c) { $sess = new Resourceful\SessionStorage("ExampleApp"); $sess->startSession(); return $sess; }; $c['logger'] = function ($c) { $handler = new Monolog\Handler\ErrorLogHandler(Monolog\Handler\ErrorLogHandler::SAPI, Monolog\Logger::NOTICE); $formatter = new Monolog\Formatter\LineFormatter(); $formatter->includeStacktraces(true); $handler->setFormatter($formatter); $log = new Monolog\Logger('webapp'); $log->pushHandler($handler); return $log; }; $c['handleException'] = $c->protect(function ($e) use($c) { $c['logger']->error($e); $exceptionBuilder = new \Resourceful\Exception\ExceptionResponseBuilder(); $exceptionBuilder->includeStackTrace = $c['config/devVersion']; $exceptionBuilder->responseFactory = $c['responseFactory']; $request = null; try { $request = $c['request']; } catch (Exception $e) { //ignore and just use a null request } $resp = $exceptionBuilder->buildResponse($e, $request); return $resp; }); $mkres = function ($cls) use($c) { return function ($c) use($cls) { $res = new $cls(); $res->request = $c['request']; $res->parameters = $c['requestParameters']; $res->responseFactory = $c['responseFactory']; $res->session = $c['session']; return $res; }; }; $c['route/index'] = $mkres('ExampleApp\\Home\\Control\\IndexResource'); $c['route/form'] = $mkres('ExampleApp\\Home\\Control\\FormResource'); $c['route/exception'] = $mkres('ExampleApp\\Home\\Control\\ExceptionResource'); }