Symfony: La toolbar

Toolbar Symfony

Quando siamo in ambiente dev dovremmo avere sotto la nostra pagina in esecuzione una toolbar che ci fornisce alcune informazioni, come il nome della rotta la velocità di esecuzione della pagina, lo stato http, quale controller viene chiamato e altre informazioni. Se clicchiamo sopra il nome della rotta in basso a sinistra ci si aprirà il Profiler di Symfony, una pagina di debug molto utile.  Qui troviamo molte informazioni utilissime:

Nella sezione Request possiamo vedere i parametri get e post. In Response possiamo analizzare la risposta. Le performance ci fanno vedere i tempi di esecuzione dei vari percorsi. Abbiamo qui anche ben schematizzato il flusso richiesta-risposta:

  • Il kernel.request che si occupa di prendere in carico la richiesta,
  • il RouterListener passa la richiesta a
  • kernel.controller che si occuperà di trovare il giusto controller
  • kernel.response verrà chiamato da kernel.controller se è in grado di fornire una risposta, altrimenti sarà chiamato kernel.view
  • kernel.terminate è chiamato invece al termine.

In events troviamo tutti gli eventi chiamati o meno ed i loro relativi metodi. Twig mostra quali twig sono stati chiamati

Capitolo importante sono i log, possiamo se andiamo su Logs  e poi su debug vediamo che il canale dovrebbe essere event, ma possiamo anche creare un nostro canale personalizzato. I logs come abbiamo visto nella presentazione delle cartelle di Symfony, si trovano nella cartella logs all’interno della cartella var, e si dividono per ambiente di produzione, quindi avremo di base dev, prod e test.

Per scrivere un log su un controller dobbiamo

$this->get('logger')->debug('Debug di test');

Che cosa abbiamo fatto? Siamo andati a chiamare il servizio logger, a questi possiamo accedere grazie all’estenzione della classe Controller che facciamo con ogni nostro controller. Con il get accedo al service container e chiamo logger. A questo punto se andiamo a ricaricare la pagina del sito (attenzione a non ricaricare la pagina di profile, ma la pagina che è associata al vostro controller), vedremo nella sezione debug all’interno di logs un nuovo canale app che come messaggio ha proprio il nostro “Debug di test”. Modifichiamolo così:

$this->get('logger')->error("Debug di test");

Ed ecco che ora il messaggio lo troveremo nella sezione info. & Errors, sempre all’interno dei logs, questo viene segnalato anche nella toolbar della pagina.

Ora vediamo di creare un nostro canale. Andiamo anzitutto in config.yml e aggiungiamo questo codice:

monolog:
channels: ["massy"]

Utilizziamo monolog e impostiamo un canale. A questo punto torniamo nel controller e lo utilizziamo:

$this->get('monolog.logger.massy')->debug("Debug di Massy");

Ecco che se ricarichiamo la nostra pagina abbiamo il debug nel nostro canale personalizzato.

A questo punto potremmo metterci in ascolto di quello che proviene dal nostro canale. Apriamo il terminale andiamo nella cartella logs e digitiamo:

tail -f dev.log |grep massy

A questo punto saremo aggiornati in tempo reale della scrittura dei logs del nostro canale personalizzato.

Possiamo anche direttamente scrivere su un altro file.  Andiamo in config.dev.yml, identifichiamo questa  parte di codice:

monolog:
handlers:
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
channels: [!event]
console:
type: console
channels: [!event, !doctrine]

bene e ora subito dopo la fine del main e l’inizio di console inseriamo:

main_massy:
type: stream
path: "%kernel.logs_dir%/massy.log"
level: debug
channels: [massy]

Salvate, ricaricate la pagina del browser e in logs avremo un altro file massy.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *