Question

I am setting up a silex app and I can not figure out why I can not view the logs from the web profiler. It always displays no logs. I do have monolog-bridge in my composer and it is installed...

relavant part of composer.json

"minimum-stability": "dev",
    "prefer-stable": true,
    "autoload":{
        "psr-4":{
            "Yamiko\\": ["src", "test"]
        }
    },
    "require": {
        "php": ">=5.4.0",
        "silex/silex": "~1.2",
        "symfony/yaml": "v2.3.11",
        "twig/twig": ">=1.8,<2.0-dev",
        "symfony/twig-bridge": "~2.3",
        "doctrine/dbal": "2.2.*",
        "swiftmailer/swiftmailer": ">=4.1.2,<4.2-dev",
        "monolog/monolog": ">=1.0.0",
        "symfony/form": "~2.3",
        "symfony/validator": "~2.3",
        "symfony/config": "~2.3",
        "symfony/translation": "~2.3",
        "symfony/security": "~2.3",
        "kriswallsmith/assetic": "v1.1.2",
        "symfony/finder": "v2.3.11",
        "natxet/CssMin": "3.0.2",
        "silex/web-profiler": "~1.0",
        "symfony/monolog-bridge": "v2.4.2"
    }

index.php

<?php
require './vendor/autoload.php';

use Yamiko\App;

$app = new App();

$app->get('/', function(){
    return 'its working!';
});

$app->run();
?>

And my application class

<?php
namespace Yamiko;
use Silex\Application;
use Silex\Provider\TwigServiceProvider;
use Silex\Provider\UrlGeneratorServiceProvider;
use Silex\Provider\SessionServiceProvider;
use Silex\Provider\ValidatorServiceProvider;
use Silex\Provider\FormServiceProvider;
use Silex\Provider\HttpCacheServiceProvider;
use Silex\Provider\HttpFragmentServiceProvider;
use Silex\Provider\SecurityServiceProvider;
use Symfony\Component\Security\Core\Encoder\BCryptPasswordEncoder;
use Silex\Provider\RememberMeServiceProvider;
use Silex\Provider\SwiftmailerServiceProvider;
use Silex\Provider\MonologServiceProvider;
use Silex\Provider\TranslationServiceProvider;
use Symfony\Component\Translation\Loader\YamlFileLoader;
use Silex\Provider\DoctrineServiceProvider;
use Silex\Provider\ServiceControllerServiceProvider;
use Silex\Provider\WebProfilerServiceProvider;

class App extends Application{
    use Application\TwigTrait;
    use Application\SecurityTrait;
    use Application\FormTrait;
    use Application\UrlGeneratorTrait;
    use Application\SwiftmailerTrait;
    use Application\MonologTrait;
    use Application\TranslationTrait;

    public function __construct(array $values = array()) {
        parent::__construct($values);

        // monolog
        $this->register(new MonologServiceProvider(), array(
            'monolog.name' => 'yamiko',
            'monolog.level' => 100,
            'monolog.logfile' => __DIR__ . 'Yamiko/cache/yamiko.log',
        ));

        // http cache
        $this->register(new HttpCacheServiceProvider(), array(
            'http_cache.cache_dir' => __DIR__ . '/cache/http/',
        ));

        // http fragments used for ESI and hincludes
        $this->register(new HttpFragmentServiceProvider());

        // UrlGeneratorServiceProvider
        $this->register(new UrlGeneratorServiceProvider());

        // service controller
        $this->register(new ServiceControllerServiceProvider());

        // TranslationServiceProvider
        $this->register(new TranslationServiceProvider(), array(
            'locale_fallbacks' => array('en'),
        ));
        $this['translator'] = $this->share($this->extend('translator', function($translator, $this) {
            $translator->addLoader('yaml', new YamlFileLoader());
            $translator->addResource('yaml', 'Yamiko/locales/en.yml', 'en');
            $translator->addResource('yaml', 'Yamiko/locales/es.yml', 'es');
            $translator->addResource('yaml', 'Yamiko/locales/fr.yml', 'fr');
            return $translator;
        }));

        // FormServiceProvider
        $this->register(new FormServiceProvider());

        // validator
        $this->register(new ValidatorServiceProvider());

        // SecurityServiceProvider
        $this->register(new SecurityServiceProvider());
        $this->register(new RememberMeServiceProvider());
        // @TODO configure remember me provider
        $this['security.firewalls'] = array(
            'admin' => array(
                'pattern' => '^/admin',
                'http' => true,
                'users' => array(
                    // raw password is foo
                    'admin' => array('ROLE_ADMIN', '5FZ2Z8QIkA7UTZ4BYkoC+GsReLf569mSKDsfods6LYQ8t+a8EW9oaircfMpmaLbPBh4FOBiiFyLfuZmTSUwzZg=='),
                ),
            ),
        );
        $this['security.encoder.digest'] = $this->share(function ($this) {
            // use the sha1 algorithm
            // don't base64 encode the password
            // use only 1 iteration
//            return new MessageDigestPasswordEncoder('sha1', false, 1);
            return new BCryptPasswordEncoder(10);
        });

        // twig
        $this->register(new TwigServiceProvider(), array(
            'twig.path' => 'Yamiko/views',
            'twig.options' => array(
                'debug' => $this['debug'],
                'cache' => 'Yamiko/cache/views/',
                'optimizations' => -1,
                'strict_variables' => true,
                'autoescape' => true,
                'charset' => 'utf-8',
                'auto_reload' => $this['debug']
            )
        ));
        $this['twig'] = $this->share($this->extend('twig', function($twig, $app) {
//            $twig->addGlobal('pi', 3.14);
//            $twig->addFilter('levenshtein', new \Twig_Filter_Function('levenshtein'));
            return $twig;
        }));

        // sessions
//        $this['cookie_lifetime'] = 0;// can be used to set an explicit cookie lifetime.
        $this->register(new SessionServiceProvider());

        // swift mailer
        $this->register(new SwiftmailerServiceProvider());
        $this['swiftmailer.options'] = array(
            'host' => 'localhost',
            'port' => '25',
            'username' => '',
            'password' => '',
            'encryption' => null,
            'auth_mode' => null
        );

        // profiler
        $this->register($p = new WebProfilerServiceProvider(), array(
            'profiler.cache_dir' => __DIR__ . 'Yamiko/cache/profiler',
            'profiler.mount_prefix' => '/_profiler', // this is the default
        ));
        $this->mount('/_profiler', $p);
    }
}
Was it helpful?

Solution

This was caused by a bug. No longer an issue. https://github.com/silexphp/Silex-WebProfiler/pull/38

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top