return $app->redirect($app['url_generator']->generate('log', array('clientSlug' => $client->getSlug(), 'logSlug' => $log->getSlug()))); })->bind("home"); $app->get('/logs/{clientSlug}', function ($clientSlug) use($app) { $viewer = new Syonix\LogViewer\LogViewer($app['config']['logs']); $client = $viewer->getClient($clientSlug); $log = $client->getFirstLog(); if (is_null($log)) { $app->abort(404, "Client not found"); } return $app->redirect($app['url_generator']->generate('log', array('clientSlug' => $clientSlug, 'logSlug' => $log->getSlug()))); })->bind("client"); $controller_log = function (\Symfony\Component\HttpFoundation\Request $request, $clientSlug, $logSlug) use($app) { try { $viewer = new Syonix\LogViewer\LogViewer($app['config']['logs']); $clients = $viewer->getClients(); $client = $viewer->getClient($clientSlug); if ($client === null || !$client->logExists($logSlug)) { $app->abort(404, "Log file not configured"); } $log = $client->getLog($logSlug)->load(); $minLogLevel = $request->query->get('m'); $currentLogger = $request->query->get('l'); if ($currentLogger && !$log->getLoggers()->contains($currentLogger)) { return $app->redirect($app['url_generator']->generate('log', array('clientSlug' => $clientSlug, 'logSlug' => $logSlug, 'm' => $minLogLevel, 'l' => $currentLogger))); } } catch (\League\Flysystem\FileNotFoundException $e) { $app->abort(404, "Log file not found"); } return $app['twig']->render('log.html.twig', array('clients' => $clients, 'current_client_slug' => $clientSlug, 'current_log_slug' => $logSlug, 'log' => $log, 'logLevels' => Monolog\Logger::getLevels(), 'min_log_level' => in_array($minLogLevel, Monolog\Logger::getLevels()) ? $minLogLevel : 100, 'loggers' => $log->getLoggers(), 'current_logger' => $currentLogger)); }; $app->get('/logs/{clientSlug}/{logSlug}', $controller_log)->bind("log");