public function register(Application $app)
 {
     $default_options = ['endpoint' => 'slack.com/api/', 'token' => null, 'limit_retries' => 5, 'identities' => ['Silex' => []], 'logging' => ['enabled' => false, 'channel' => '', 'identity' => '']];
     if (isset($app['dz.slack.options'])) {
         $app['dz.slack.options'] = array_merge($default_options, $app['dz.slack.options']);
     } else {
         $app['dz.slack.options'] = $default_options;
     }
     $app['dz.slack.identity_bag'] = $app->share(function ($app) {
         $identityBag = new Messaging\IdentityBag();
         $identityBag->createIdentities($app['dz.slack.options']['identities']);
         return $identityBag;
     });
     $app['dz.slack.connection'] = $app->share(function ($app) {
         $connection = new Client\Connection();
         $connection->setEndpoint($app['dz.slack.options']['endpoint']);
         $connection->setLimitRetries($app['dz.slack.options']['limit_retries']);
         $connection->setToken($app['dz.slack.options']['token']);
         return $connection;
     });
     $app['dz.slack.client'] = $app->share(function ($app) {
         return new Client($app['dz.slack.connection']);
     });
     $app['dz.slack.messaging'] = $app->share(function ($app) {
         return new Messaging($app['dz.slack.client'], $app['dz.slack.identity_bag']);
     });
     if ($app['dz.slack.options']['logging']['enabled']) {
         $app['monolog.handler.slack'] = $app->share(function ($app) {
             $level = MonologServiceProvider::translateLevel($app['monolog.level']);
             return new SlackHandler($app['dz.slack.messaging'], $app['dz.slack.options']['logging']['channel'], $app['dz.slack.options']['logging']['identity'], $level);
         });
         $app['monolog']->pushHandler($app['monolog.handler.slack']);
     }
 }
 public function register(Application $app)
 {
     $app['logger'] = function () use($app) {
         return $app['monolog'];
     };
     if ($bridge = class_exists('Symfony\\Bridge\\Monolog\\Logger')) {
         $app['monolog.handler.debug'] = function () use($app) {
             $level = MonologServiceProvider::translateLevel($app['monolog.level']);
             return new DebugHandler($level);
         };
     }
     $app['monolog.logger.class'] = $bridge ? 'Symfony\\Bridge\\Monolog\\Logger' : 'Monolog\\Logger';
     $app['monolog'] = $app->share(function ($app) {
         $log = new $app['monolog.logger.class']($app['monolog.name']);
         $log->pushHandler($app['monolog.handler']);
         if ($app['debug'] && isset($app['monolog.handler.debug'])) {
             $log->pushHandler($app['monolog.handler.debug']);
         }
         return $log;
     });
     $app['monolog.handler'] = function () use($app) {
         $level = MonologServiceProvider::translateLevel($app['monolog.level']);
         return new StreamHandler($app['monolog.logfile'], $level, $app['monolog.bubble'], $app['monolog.permission']);
     };
     $app['monolog.level'] = function () {
         return Logger::DEBUG;
     };
     $app['monolog.listener'] = $app->share(function () use($app) {
         return new LogListener($app['logger']);
     });
     $app['monolog.name'] = 'myapp';
     $app['monolog.bubble'] = true;
     $app['monolog.permission'] = null;
 }
 public function register(Container $app)
 {
     $app['logger'] = function () use($app) {
         return $app['monolog'];
     };
     if ($bridge = class_exists('Symfony\\Bridge\\Monolog\\Logger')) {
         $app['monolog.handler.debug'] = function () use($app) {
             $level = MonologServiceProvider::translateLevel($app['monolog.level']);
             return new DebugHandler($level);
         };
         if (isset($app['request_stack'])) {
             $app['monolog.not_found_activation_strategy'] = function () use($app) {
                 return new NotFoundActivationStrategy($app['request_stack'], array('^/'), $app['monolog.level']);
             };
         }
     }
     $app['monolog.logger.class'] = $bridge ? 'Symfony\\Bridge\\Monolog\\Logger' : 'Monolog\\Logger';
     $app['monolog'] = function ($app) {
         $log = new $app['monolog.logger.class']($app['monolog.name']);
         $handler = new Handler\GroupHandler($app['monolog.handlers']);
         if (isset($app['monolog.not_found_activation_strategy'])) {
             $handler = new Handler\FingersCrossedHandler($handler, $app['monolog.not_found_activation_strategy']);
         }
         $log->pushHandler($handler);
         if ($app['debug'] && isset($app['monolog.handler.debug'])) {
             $log->pushHandler($app['monolog.handler.debug']);
         }
         return $log;
     };
     $app['monolog.formatter'] = function () {
         return new LineFormatter();
     };
     $app['monolog.handler'] = $defaultHandler = function () use($app) {
         $level = MonologServiceProvider::translateLevel($app['monolog.level']);
         $handler = new Handler\StreamHandler($app['monolog.logfile'], $level, $app['monolog.bubble'], $app['monolog.permission']);
         $handler->setFormatter($app['monolog.formatter']);
         return $handler;
     };
     $app['monolog.handlers'] = function () use($app, $defaultHandler) {
         $handlers = array();
         // enables the default handler if a logfile was set or the monolog.handler service was redefined
         if ($app['monolog.logfile'] || $defaultHandler !== $app->raw('monolog.handler')) {
             $handlers[] = $app['monolog.handler'];
         }
         return $handlers;
     };
     $app['monolog.level'] = function () {
         return Logger::DEBUG;
     };
     $app['monolog.listener'] = function () use($app) {
         return new LogListener($app['logger'], $app['monolog.exception.logger_filter']);
     };
     $app['monolog.name'] = 'app';
     $app['monolog.bubble'] = true;
     $app['monolog.permission'] = null;
     $app['monolog.exception.logger_filter'] = null;
     $app['monolog.logfile'] = null;
     $app['monolog.use_error_handler'] = !$app['debug'];
 }
 public function register(Application $app)
 {
     $app['logger'] = function () use($app) {
         return $app['monolog'];
     };
     if ($bridge = class_exists('Symfony\\Bridge\\Monolog\\Logger')) {
         $app['monolog.handler.debug'] = function () use($app) {
             $level = MonologServiceProvider::translateLevel($app['monolog.level']);
             return new DebugHandler($level);
         };
     }
     $app['monolog.logger.class'] = $bridge ? 'Symfony\\Bridge\\Monolog\\Logger' : 'Monolog\\Logger';
     $app['monolog'] = $app->share(function ($app) {
         $log = new $app['monolog.logger.class']($app['monolog.name']);
         $log->pushHandler($app['monolog.handler']);
         if ($app['debug'] && isset($app['monolog.handler.debug'])) {
             $log->pushHandler($app['monolog.handler.debug']);
         }
         return $log;
     });
     $app['monolog.handler'] = function () use($app) {
         $level = MonologServiceProvider::translateLevel($app['monolog.level']);
         return new StreamHandler($app['monolog.logfile'], $level);
     };
     $app['monolog.level'] = function () {
         return Logger::DEBUG;
     };
     $app['monolog.boot.before'] = $app->protect(function (Request $request) use($app) {
         $app['monolog']->addInfo('> ' . $request->getMethod() . ' ' . $request->getRequestUri());
     });
     $app['monolog.boot.error'] = $app->protect(function (\Exception $e) use($app) {
         $message = sprintf('%s: %s (uncaught exception) at %s line %s', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine());
         if ($e instanceof HttpExceptionInterface && $e->getStatusCode() < 500) {
             $app['monolog']->addError($message, array('exception' => $e));
         } else {
             $app['monolog']->addCritical($message, array('exception' => $e));
         }
     });
     $app['monolog.boot.after'] = $app->protect(function (Request $request, Response $response) use($app) {
         if ($response instanceof RedirectResponse) {
             $app['monolog']->addInfo('< ' . $response->getStatusCode() . ' ' . $response->getTargetUrl());
         } else {
             $app['monolog']->addInfo('< ' . $response->getStatusCode());
         }
     });
     $app['monolog.name'] = 'myapp';
 }
 public function register(Application $app)
 {
     $app['monolog.formatter'] = $app->share(function () {
         return new LineFormatter(null, 'Y-m-d H:i:s.u');
     });
     $app['monolog.handler'] = function () use($app) {
         if (!$app['monolog.logfile']) {
             return new NullHandler();
         }
         if (method_exists('Silex\\Provider\\MonologServiceProvider', 'translateLevel')) {
             $level = MonologServiceProvider::translateLevel($app['monolog.level']);
         } else {
             $level = $app['monolog.level'];
         }
         $streamHandler = new StreamHandler($app['monolog.logfile'], $level);
         $streamHandler->setFormatter($app['monolog.formatter']);
         return $streamHandler;
     };
     $app['logger'] = $app->share($app->extend('logger', function (Logger $logger, \Pimple $app) {
         $logger->pushProcessor($app['logger.request_processor']);
         $logger->pushProcessor(new PsrLogMessageProcessor());
         if (!($app->offsetExists('monolog.logstashfile') && $app['monolog.logstashfile'])) {
             return $logger;
         }
         $logstashHandler = new StreamHandler($app['monolog.logstashfile'], $app['monolog.level']);
         $logstashHandler->setFormatter(new LogstashFormatter($app['monolog.name']));
         $extras = array();
         if ($app->offsetExists('meta.service')) {
             $extras['service'] = $app['meta.service'];
         }
         if ($app->offsetExists('meta.customer')) {
             $extras['customer'] = $app['meta.customer'];
         }
         if ($app->offsetExists('meta.environment')) {
             $extras['environment'] = $app['meta.environment'];
         }
         $logstashHandler->pushProcessor(new ExtraContextProcessor($extras));
         $logger->pushHandler($logstashHandler);
         return $logger;
     }));
     $app['logger.request_processor'] = $app->share(function () use($app) {
         return new RequestProcessor($app);
     });
 }
 protected function getApplication()
 {
     $app = new Application();
     $app->register(new MonologServiceProvider());
     $app['monolog.handler'] = $app->share(function () use($app) {
         $level = MonologServiceProvider::translateLevel($app['monolog.level']);
         return new TestHandler($level);
     });
     return $app;
 }
 protected function getApplication()
 {
     $app = new Application();
     $app->register(new MonologServiceProvider(), array('monolog.handler' => function () use($app) {
         $level = MonologServiceProvider::translateLevel($app['monolog.level']);
         return new TestHandler($level);
     }, 'monolog.logfile' => 'php://memory'));
     return $app;
 }
Beispiel #8
0
use Monolog\Formatter\LineFormatter;
use Silex\Provider\MonologServiceProvider;
date_default_timezone_set('UTC');
if (!defined('ROOT_PATH')) {
    define("ROOT_PATH", __DIR__ . "/..");
}
if (!defined('APP_NAME')) {
    define('APP_NAME', 'DefaultServiceAppName');
}
//Doctrine
$app->register(new \Silex\Provider\DoctrineServiceProvider(), array('db.options' => array('driver' => getenv('API_DB_DRIVER'), 'dbname' => getenv('API_DB_NAME'), 'user' => getenv('API_DB_USER'), 'password' => getenv('API_DB_PWD'), 'memory' => getenv('API_DB_MEMORY'), 'charset' => 'utf8')));
//Redis
//$app->register(
//    new Predis\Silex\ClientServiceProvider(),
//    [
//        'predis.parameters' => getenv('REDIS_HOST'),
//    ]
//);
//Monolog
$app->register(new MonologServiceProvider(), ['monolog.handler' => function () use($app) {
    $level = MonologServiceProvider::translateLevel($app['monolog.level']);
    $handler = new \Monolog\Handler\SyslogUdpHandler(getenv('RSYSLOGD_HOST'), getenv('RSYSLOGD_PORT'), LOG_USER, $level, $app['monolog.bubble']);
    $formatter = new LineFormatter("[%datetime%] %level_name% " . gethostname() . " %channel%  %message%\n");
    $handler->setFormatter($formatter);
    return $handler;
}, 'monolog.name' => APP_NAME]);
// Monitoring - use $app['monitor'] (\League\StatsD\Client) to monitor custom metrics
$app->register(new \League\StatsD\Silex\Provider\StatsdServiceProvider(), array('statsd.host' => getenv('API_MONITOR_HOST'), 'statsd.port' => getenv('API_MONITOR_PORT'), 'statsd.namespace' => getenv('API_MONITOR_NAMESPACE')));
$app['monitor'] = function () use($app) {
    return $app['statsd'];
};
Beispiel #9
0
 public function register(\Silex\Application $app)
 {
     parent::register($app);
 }