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;
     }
 }
Example #4
0
<?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;
 }
Example #6
0
 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');
 }