Compare commits

...

7 Commits

Author SHA1 Message Date
José Tobias de Freitas Neto ddb84917b5 Capturando server_ip e adicionando ao logException 5 months ago
José Tobias de Freitas Neto 730aa08b87 Adicionando IP do servidor ao customData nos logs
Se nenhum IP for especificado no .env, será utilizado o 127.0.0.1
6 months ago
José Tobias de Freitas Neto 00472d7ac1 Adicionando IP do servidor ao arquivo de configuração
Possibilita setar um IP para o servidor que está disparando os logs
6 months ago
José Neto 6218053a9a Constante não presente em versões antigas da lib 2 years ago
José Neto 554b985b7d Renomeando método 2 years ago
José Neto 49967bf8f7 Trabalhando tanto com Monolog 1.x quanto com Monolog 2.x 2 years ago
José Neto 834c8bc178 Vinculando a fila ao exchange
Até então a fila de processamento não era especificada, ficando a cargo do RabbitMQ a escolha da mesma. Agora forçamos a fila que deve ser utilizada. Isso permite configurar diferentes filas para diferentes fins.
2 years ago

@ -7,7 +7,6 @@ use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Exception\GuzzleException;
use Monolog\Handler\AbstractProcessingHandler;
use Monolog\Logger;
use Psr\Http\Message\ResponseInterface;
use Symfony\Component\HttpFoundation\Response;
use Monolog\LogRecord;
@ -33,10 +32,10 @@ class DiscordHandler extends AbstractProcessingHandler
/**
* @param string $webhook
* @param int $level
* @param mixed $level
* @param bool $bubble
*/
public function __construct(string $webhook, \Monolog\Level $level = \Monolog\Level::ERROR, bool $bubble = true)
public function __construct(string $webhook, $level = 400, bool $bubble = true)
{
$this->webhook = $webhook;
$this->client = new Client();
@ -45,18 +44,35 @@ class DiscordHandler extends AbstractProcessingHandler
}
/**
* @param LogRecord $record
* @param mixed $record
* @return void
* @throws GuzzleException
*/
protected function write(LogRecord $record): void
protected function write($record): void
{
if (is_array($record)) {
// Implementação para Monolog 1.x
$this->recordHandler($record);
}elseif (class_exists(LogRecord::class) && $record instanceof LogRecord) {
// Implementação para Monolog 2.x
$arrayRecord = $record->toArray();
$this->recordHandler($arrayRecord);
}
}
/**
* @param array $record
* @return void
* @throws GuzzleException
*/
protected function recordHandler(array $record)
{
if ($this->rateLimitRemaining === 0 && $this->rateLimitReset !== null) {
$this->waitUntil($this->rateLimitReset);
}
try {
$response = $this->send($record->toArray());
$response = $this->send($record);
} catch (ClientException $exception) {
$response = $exception->getResponse();
@ -67,7 +83,7 @@ class DiscordHandler extends AbstractProcessingHandler
$retryAfter = $response->getHeaderLine('Retry-After');
$this->wait((int)$retryAfter);
$this->send($record->toArray());
$this->send($record);
}
$this->rateLimitRemaining = (int)$response->getHeaderLine('X-RateLimit-Remaining');

@ -32,7 +32,7 @@ class RabbitMQHandler extends AbstractProcessingHandler
/**
* @throws Exception
*/
public function __construct($exchange = 'logs', $routingKey = 'log', $level = \Monolog\Level::ERROR, $bubble = true)
public function __construct($exchange = 'logs', $routingKey = 'log', $level = 400, $bubble = true)
{
parent::__construct($level, $bubble);
@ -47,17 +47,37 @@ class RabbitMQHandler extends AbstractProcessingHandler
$this->exchange = $exchange;
$this->routingKey = $routingKey;
$this->channel->exchange_declare($exchange, 'direct', false, true, false);
$queueName = config('logging.channels.rabbitmq.queue', 'logstash_queue');
$this->channel->queue_declare($queueName, false, true, false, false);
$this->channel->queue_bind($queueName, $this->exchange, $this->routingKey);
}
/**
* @param mixed $record
* @return void
*/
public function write($record): void
{
if (is_array($record)) {
// Implementação para Monolog 1.x
$this->recordHandler($record);
}elseif (class_exists(LogRecord::class) && $record instanceof LogRecord) {
// Implementação para Monolog 2.x
$arrayRecord = $record->toArray();
$this->recordHandler($arrayRecord);
}
}
/**
* @param LogRecord $record
* @param array $record
* @return void
*/
public function write(LogRecord $record): void
protected function recordHandler(array $record)
{
$data = json_encode($record->toArray());
$data = json_encode($record);
$msg = new AMQPMessage($data, [
'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT
'delivery_mode' => 2
]);
$this->channel->basic_publish($msg, $this->exchange, $this->routingKey);

@ -69,6 +69,8 @@ trait LogTrait
{
$this->initializeLogServices();
$customData['server_ip'] = config('laravel-logs-layer.server_ip');
foreach ($this->logServices as $logService) {
$logService->$method($message, [
'custom_data' => $customData,
@ -147,6 +149,8 @@ trait LogTrait
$this->initializeLogServices();
$customData['server_ip'] = config('laravel-logs-layer.server_ip');
foreach ($this->logServices as $logService) {
$logService->$log_level($caller, $exception, ExceptionContextDTO::fromArray([
'code' => $errorCode,

@ -15,4 +15,5 @@ return [
'backoff' => explode(',', env('LOG_QUEUE_BACKOFF', '15'))
],
'sensitive_data' => env('LOGS_LAYER_SENSITIVE_DATA', 'password,password_confirmation,token,api_token,api_key,access_token,refresh_token,authorization_code,client_secret'),
'server_ip' => env('SERVER_IP', '127.0.0.1')
];

Loading…
Cancel
Save