Le MonologBundle journaux tout en utilisant les gestionnaires de mêmes pour l'ensemble du cadre. Cela signifie que si l'un de vos besoins en matière de services pour vous connecter à des gestionnaires différents, vous devez créer votre propre Enregistreur/Gestionnaire et de les injecter dans votre service.
Ce pourrait être un exemple de config (en yaml):
services:
my_logger:
class: Symfony\Bridge\Monolog\Logger
arguments: [soap]
calls:
- [pushHandler, [@my_handler]]
my_handler:
class: Monolog\Handler\StreamHandler
# 200 = INFO, see Monolog::Logger for the values of log levels
arguments: [%kernel.root_dir%/%kernel.environment%.soap.log, 200]
soap_service:
class: Your\Soap\Client
arguments: [@my_logger]
J'espère que cela clarifie.
Mise à jour: comme symfony 2.1, vous pouvez également configurer les canaux qui reçoivent des gestionnaires, de sorte que vous pourrait aussi faire quelque chose comme ceci:
services:
soap_service:
class: Your\Soap\Client
arguments: [@logger]
tags:
- { name: monolog.logger, channel: soap }
Ce qui crée un nouveau savon canal (c'est à dire enregistreur instance de la réception de tous les maîtres-chiens), puis de configurer les différents gestionnaires pour ce canal:
monolog:
handlers:
main:
type: stream
path: %kernel.root_dir%/%kernel.environment%.log
level: error
channels: [!soap]
soap:
type: stream
path: %kernel.root_dir%/%kernel.environment%.soap.log
level: info
channels: [soap]
Cela signifie que le principal gestionnaire recevra tout, mais le savon de canal, et le savon gestionnaire recevra uniquement le savon de canal. Vous pouvez également supprimer l' channels
sur la touche sur le principal le gestionnaire si vous voulez que votre fichier journal principal de tout avoir, mais aussi d'avoir une copie seulement le savon journaux séparément. Cela apporte beaucoup de souplesse, et comme vous le voyez les canaux est un tableau de sorte que vous pouvez dresser la liste de chaînes que vous voulez, ou utiliser la liste noire, !name
de la notation à l'exclusion de certains et tout le reste.