Je veux me connecter à un fichier différent de l'habituel dev.log ou Prod.log P>
Je sais que cela peut être fait avec différents canaux et je l'ai utilisé dans plusieurs services, mais je ne suis pas très clair sur la commutation du canal de Monologue dans un contrôleur. P>
Dans un service, vous définissez simplement la chaîne via l'attribut code> Tags code> dans la définition de service, mais comment puis-je faire cela dans un contrôleur ou même mieux dans une action spécifique? P>
Je sais qu'une solution possible serait la suivante: Symfony 2: Connectez-vous à Un fichier spécifique p>
mais il semble trop excédent de définir deux nouveaux services uniquement pour vous connecter à un fichier personnalisé. P>
3 Réponses :
La seule façon de le faire est de définir votre contrôleur en tant que service A> et injecter un enregistreur personnalisé avec un canal personnalisé. Étant donné que les canaux sont créés automatiquement, il n'y a actuellement aucun autre moyen, mais c'est une demande intéressante et vous n'êtes pas le premier, alors j'ai créé un AS de Symfony / Monolog-Bundle 2.4.0 Vous pouvez définir des chaînes supplémentaires comme: p> alors vous pouvez le récupérer comme $ ceci-> obtenez ('monolog.logger.mychannel') code> (que vous pouvez déjà faire si le canal existe, mais pas si tu veux Un canal personnalisé pour le contrôleur que rien d'autre n'utilise). P>
$ ceci-> get ('monolog.logger.mychannel') code> p> p>
@ Johannesklauß La prochaine version du Bundle, je ferai demain inclut une solution appropriée pour ce BTW.
J'utilise actuellement Symfony / Monolog-Bundle 2.3.0 et le code suivant fonctionne.
Configuration dans config.yml code> p>
$doctrineLogger = $this->get('monolog.logger.doctrine');
Cela fonctionne, il ne manque que canaux: ['doctrine'] code> avant les gestionnaires
Je sais que c'est un post plus ancien, mais j'ai rencontré un besoin similaire en utilisant Symfony / Monolog-Bundle 2.1.x. Je ne pouvais pas sembler trouver exactement ce dont j'avais besoin dans d'autres discussions, je documente ma solution ici, qui consistait à créer un conteneur d'enregistrement utilisant un canal personnalisé.
dans config.yml p>
$userActionsLogger->logger->info('A thing happened!')