O que é um sistema de log personalizado?
Um sistema de log personalizado é uma forma de coletar e armazenar informações específicas sobre o funcionamento da sua aplicação. É um processo de registro de eventos que permitem acompanhar o desempenho, erros e atividades de usuários em uma aplicação. Com um sistema de log bem implementado, você pode facilmente identificar e corrigir problemas em sua aplicação de forma eficiente.
Por que implementar um sistema de log personalizado no Symfony?
O Symfony, por padrão, já possui um sistema de log integrado. No entanto, nem sempre esse sistema é capaz de registrar todas as informações necessárias para a sua aplicação. Com um sistema de log personalizado, você pode coletar e armazenar informações específicas, permitindo uma análise mais detalhada e precisa do funcionamento da sua aplicação. Além disso, um sistema de log personalizado pode melhorar a facilidade de manutenção da aplicação, já que você terá mais informações sobre eventuais problemas e suas causas.
Como implementar um sistema de log personalizado no Symfony?
Para implementar um sistema de log personalizado no Symfony, você precisa criar um novo serviço de logger. Esse serviço deve estender a classe AbstractLogger e implementar o método log, que é responsável por armazenar as informações de log. O serviço também deve ser registrado no container de serviços do Symfony para que possa ser utilizado em toda a aplicação. Além disso, é possível personalizar o formato das informações de log e os canais que serão utilizados para armazenar as informações.
Exemplo de implementação de um sistema de log personalizado no Symfony
// src/Logger/CustomLogger.php
namespace AppLogger;
use PsrLogAbstractLogger;
class CustomLogger extends AbstractLogger
{
private $logPath;
public function __construct(string $logPath)
{
$this->logPath = $logPath;
}
public function log($level, $message, array $context = [])
{
$logMessage = sprintf("[%s] %s - %sn", $level, date('Y-m-d H:i:s'), $message);
error_log($logMessage, 3, $this->logPath);
}
}
No exemplo acima, criamos uma classe CustomLogger que estende a classe AbstractLogger e implementa o método log. O construtor da classe recebe um caminho para o arquivo de log onde as informações serão armazenadas. No método log, criamos uma mensagem de log formatada contendo o nível de log, a data e hora e a mensagem fornecida. Essa mensagem é então armazenada usando a função error_log do PHP.
// config/services.yaml
services:
app.logger.custom_logger:
class: AppLoggerCustomLogger
arguments:
- '%kernel.logs_dir%/custom.log'
No arquivo de configuração de serviços do Symfony, registramos o serviço CustomLogger que criamos anteriormente. Passamos como argumento o caminho para o arquivo de log que será utilizado. Com isso, podemos utilizar o serviço app.logger.custom_logger em toda a aplicação para realizar o armazenamento de informações de log. É possível personalizar ainda mais a configuração do sistema de log através do arquivo de configuração de log do Symfony.