Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
New in version 2.1: A capacidade de especificar os canais para um manipulador específico foi adicionada ao MonologBundle para o Symfony 2.1.
A Edição Standard do Symfony contém vários canais para log: doctrine
,
event
, security
e request
. Cada canal corresponde a um serviço logger
(monolog.logger.XXX
) no container e, é injetado no
serviço em questão. A finalidade dos canais é de serem capazes de organizar diferentes
tipos de mensagens de log.
Por padrão, o Symfony2 realiza o log de todas as mensagens em um único arquivo (independentemente do canal).
Agora, suponha que você queira registrar o canal doctrine
para um arquivo diferente.
Para isso, basta criar um novo manipulador (handler) e configurá-lo como segue:
1 2 3 4 5 6 7 8 9 10 | monolog:
handlers:
main:
type: stream
path: /var/log/symfony.log
channels: !doctrine
doctrine:
type: stream
path: /var/log/doctrine.log
channels: doctrine
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <monolog:config>
<monolog:handlers>
<monolog:handler name="main" type="stream" path="/var/log/symfony.log">
<monolog:channels>
<type>exclusive</type>
<channel>doctrine</channel>
</monolog:channels>
</monolog:handler>
<monolog:handler name="doctrine" type="stream" path="/var/log/doctrine.log" />
<monolog:channels>
<type>inclusive</type>
<channel>doctrine</channel>
</monolog:channels>
</monolog:handler>
</monolog:handlers>
</monolog:config>
|
Você pode especificar a configuração de várias formas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | channels: ~ # Include all the channels
channels: foo # Include only channel "foo"
channels: !foo # Include all channels, except "foo"
channels: [foo, bar] # Include only channels "foo" and "bar"
channels: [!foo, !bar] # Include all channels, except "foo" and "bar"
channels:
type: inclusive # Include only those listed below
elements: [ foo, bar ]
channels:
type: exclusive # Include all, except those listed below
elements: [ foo, bar ]
|
Você pode mudar o canal que monolog faz o log para um serviço de cada vez. Isto é feito
adicionando a tag monolog.logger
ao seu serviço e especificando qual canal
o serviço deve fazer o log. Ao fazer isso, o logger que é injetado
naquele serviço é pré-configurado para usar o canal que você especificou.
Para mais informações - incluindo um exemplo completo - leia “dic_tags-monolog” na seção de referência das Tags de Injeção de Dependência.