Documentação do Symfony2
Renderizada do repositório symfony-docs-pt-BR no Github

Como fazer log de Mensagens em Arquivos Diferentes

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).

Mudando um canal para um Handler diferente

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:

Especificação Yaml

Você pode especificar a configuração de várias formas:

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 ]

Criando o seu próprio Canal

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 “Usando um canal próprio para logging com o Monolog” na seção de referência das Tags de Injeção de Dependência.

Aprenda mais no Cookbook