(16) 981791110 contato@policast.studio

O que é o MonologBundle?

O MonologBundle é um pacote do Symfony que permite a configuração e o uso da biblioteca Monolog no ambiente do Symfony. O Monolog é uma biblioteca popular de logging em PHP que permite a gravação de logs de forma estruturada em arquivos de texto, banco de dados ou outros canais configuráveis.

Por que usar o MonologBundle?

O MonologBundle é uma opção confiável para gravação de logs em projetos Symfony, pois oferece integração e configuração simplificada com a biblioteca Monolog. Através dele é possível definir canais específicos para diferentes tipos de logs, assim como habilitar e desabilitar a gravação de logs em diferentes ambientes e contextos. Além disso, o MonologBundle tem compatibilidade com diversas bibliotecas e ferramentas de terceiros como o Graylog e o Kibana.

Como instalar o MonologBundle?

Para instalar o MonologBundle no seu projeto Symfony é necessário incluir a biblioteca Monolog e o pacote MonologBundle nas dependências do seu projeto PHP. No arquivo composer.json adicione a seguinte dependência:

"monolog/monolog": "^2.0",

Em seguida execute o comando:

$ composer require symfony/monolog-bundle

Como configurar o MonologBundle?

Para configurar o MonologBundle é necessário editar o arquivo de configuração config/packages/monolog.yaml. Neste arquivo estão definidas as configurações padrões de logging para o ambiente de produção e de desenvolvimento do Symfony.

Por exemplo, para definir um canal de log específico para o seu projeto, é possível adicionar o seguinte código no arquivo de configuração:

monolog:

    handlers:

        your_custom_handler:

            type: stream

            path: "%kernel.logs_dir%/yourlog.log"

            level: error

Como usar o MonologBundle?

Para usar o MonologBundle é necessário injetar a classe no construtor ou no método da classe que irá gerar os logs. Para criar um novo logger basta usar o serviço do MonologBundle chamando o método getLogger e passando o identificador do canal de log configurado.

use MonologBundleLogger;

$logger = new Logger('your_custom_handler');

$logger->debug('Mensagem de debug');

$logger->warning('Mensagem de warning');

Qual é a sintaxe para os níveis de logging no MonologBundle?

No MonologBundle os níveis de logging são definidos por constantes, sendo os mais comuns:

  • DEBUG
  • INFO
  • NOTICE
  • WARNING
  • ERROR
  • CRITICAL
  • ALERT
  • EMERGENCY

Por exemplo, para gerar um log de nível debug use:

$logger->debug('Mensagem de debug');

Posso usar diferentes canais de logging com o MonologBundle?

Sim, é possível criar diferentes canais de logging com o MonologBundle, para isso basta configurar os canais no arquivo config/packages/monolog.yaml. Por exemplo, para definir um canal de log específico para o sistema de autenticação, adicione o seguinte código:

monolog:

    handlers:

        authentication:

            type: stream

            path: "%kernel.logs_dir%/auth.log"

            level: info

Em seguida, ao utilizar o serviço do MonologBundle, defina o canal de log como parâmetro:

$logger = $this->get('monolog.logger.authentication');

Como gravar logs em diferentes canais?

Para gravar logs em diferentes canais é necessário definir o canal de log ao instanciar o novo logger.

$logger = $this->get('monolog.logger.your_custom_handler');

Em seguida, basta chamar o método do logger com a mensagem a ser registrada.

$logger->debug('Mensagem de debug');

Como desabilitar logs em um ambiente específico?

Para desabilitar o logging em um ambiente específico, é possível definir no arquivo de configuração config/packages/monolog.yaml a configuração handlers para o ambiente desejado. Por exemplo, para desabilitar o registro de logs no ambiente de teste:

monolog:

    handlers:

        main:

            level: NOTICE

        test:

            type: null

Como reutilizar serviços de logging em outros serviços?

Para utilizar o serviço do MonologBundle em outras classes do Symfony, é necessário definir o serviço no arquivo de configuração services.yaml. Por exemplo, para definir um serviço de logging do tipo MonologLogger no seu projeto:

services:

    AppServiceLogger:

        class: 'MonologLogger'

        arguments:

            - 'channel_name'

        tags:

            - { name: 'monolog.logger', channel: 'channel_name'}

Após definido o serviço, é possível utilizá-lo em outras classes do Symfony:

namespace AppService;

use MonologLogger;

class MinhaClasseService

{

    protected $logger;

    public function __construct(Logger $logger)

    {

        $this->logger = $logger;

        $this->logger->debug('Mensagem de debug');

    }

}

Qual é a melhor prática para gravação de logs no MonologBundle?

A melhor prática para gravação de logs no MonologBundle é definir canais de log específicos para diferentes áreas do seu projeto, assim como definir níveis de log apropriados para cada canal. Além disso, é recomendado logar somente as informações relevantes, evitando sobrecarregar os arquivos de log com informações desnecessárias.