feat: actualiza el sistema de logging para usar un canal específico para REPUVE Nacional

This commit is contained in:
Juan Felipe Zapata Moreno 2026-03-12 14:56:09 -06:00
parent 1566c891a5
commit c0d0e8dd86
2 changed files with 30 additions and 28 deletions

View File

@ -6,6 +6,7 @@
use App\Models\Error;
use App\Models\Setting;
use App\Helpers\EncryptionHelper;
use Illuminate\Support\Facades\Log;
class RepuveService
{
@ -58,9 +59,9 @@ private function loadCredentials(): void
$this->username = $credentials['username'];
$this->password = $credentials['password'];
logger()->info('RepuveService: Credenciales cargadas correctamente desde BD');
Log::channel('repuve_nacional')->info('RepuveService: Credenciales cargadas correctamente desde BD');
} catch (Exception $e) {
logger()->error('RepuveService: Error al cargar credenciales', [
Log::channel('repuve_nacional')->error('RepuveService: Error al cargar credenciales', [
'error' => $e->getMessage()
]);
@ -76,7 +77,7 @@ private function loadCredentials(): void
*/
private function ejecutarSolicitudSoap(\CurlHandle $ch, string $operacion, string $url, string $soapBody, array $contexto = []): array
{
logger()->info("REPUVE Nacional [{$operacion}]: Enviando solicitud al servidor", array_merge([
Log::channel('repuve_nacional')->info("REPUVE Nacional [{$operacion}]: Enviando solicitud al servidor", array_merge([
'url' => $url,
'soap_body' => $soapBody,
], $contexto));
@ -89,16 +90,16 @@ private function ejecutarSolicitudSoap(\CurlHandle $ch, string $operacion, strin
$curlError = curl_error($ch);
if ($curlError) {
logger()->error("REPUVE Nacional [{$operacion}]: Sin conexión con el servidor", array_merge([
Log::channel('repuve_nacional')->error("REPUVE Nacional [{$operacion}]: Sin conexión con el servidor", array_merge([
'url' => $url,
'curl_error' => $curlError,
'elapsed_ms' => $elapsedMs,
'lapso_ms' => $elapsedMs,
], $contexto));
} else {
logger()->info("REPUVE Nacional [{$operacion}]: Respuesta recibida", array_merge([
Log::channel('repuve_nacional')->info("REPUVE Nacional [{$operacion}]: Respuesta recibida", array_merge([
'url' => $url,
'http_code' => $httpCode,
'elapsed_ms' => $elapsedMs,
'lapso_ms' => $elapsedMs,
'response_length' => strlen($response ?: ''),
'response' => $response,
], $contexto));
@ -108,7 +109,7 @@ private function ejecutarSolicitudSoap(\CurlHandle $ch, string $operacion, strin
'response' => $response,
'http_code' => $httpCode,
'curl_error' => $curlError,
'elapsed_ms' => $elapsedMs,
'lapso_ms' => $elapsedMs,
];
}
@ -267,9 +268,9 @@ public function verificarRobo(?string $niv = null, ?string $placa = null): array
$this->asegurarCargaCredenciales();
if (empty($niv) && empty($placa)) {
logger()->warning('REPUVE verificarRobo: No se proporcionó NIV ni PLACA');
Log::channel('repuve_nacional')->warning('REPUVE verificarRobo: No se proporcionó NIV ni PLACA');
return [
'is_robado' => false,
'es_robado' => false,
'has_error' => true,
'error_message' => 'Debe proporcionar al menos NIV o PLACA para verificar robo',
];
@ -286,12 +287,12 @@ public function verificarRobo(?string $niv = null, ?string $placa = null): array
$arg2 = '||' . $placa . str_repeat('|', 5);
}
logger()->info('REPUVE verificarRobo: Cadena construida', [
Log::channel('repuve_nacional')->info('REPUVE verificarRobo: Cadena construida', [
'niv' => $niv,
'placa' => $placa,
'arg2' => $arg2,
'total_pipes' => substr_count($arg2, '|'),
'ejemplo_visual' => str_replace('|', ' | ', $arg2),
'ejemplo' => str_replace('|', ' | ', $arg2),
]);
@ -350,7 +351,7 @@ public function verificarRobo(?string $niv = null, ?string $placa = null): array
// Si hubo error al parsear, loguear pero retornar el resultado completo
if ($resultado['has_error'] ?? false) {
logger()->warning('REPUVE verificarRobo: Error al parsear respuesta', [
Log::channel('repuve_nacional')->warning('REPUVE verificarRobo: Error al parsear respuesta', [
'niv' => $niv,
'placa' => $placa,
'error' => $resultado['error_message'] ?? 'Desconocido',
@ -363,13 +364,13 @@ public function verificarRobo(?string $niv = null, ?string $placa = null): array
unset($ch);
}
} catch (Exception $e) {
logger()->error('REPUVE verificarRobo: Excepción capturada', [
Log::channel('repuve_nacional')->error('REPUVE verificarRobo: Excepción capturada', [
'niv' => $niv,
'placa' => $placa,
'exception' => $e->getMessage(),
]);
return [
'is_robado' => false,
'es_robado' => false,
'has_error' => true,
'error_message' => 'Excepción capturada: ' . $e->getMessage(),
];
@ -441,7 +442,7 @@ public function consultarVehiculo(?string $niv = null, ?string $placa = null)
$resultado = $this->parseConsultarVehiculoResponse($response);
if ($resultado['has_error'] ?? false) {
logger()->warning('REPUVE consultarVehiculo: Error al parsear', [
Log::channel('repuve_nacional')->warning('REPUVE consultarVehiculo: Error al parsear', [
'niv' => $niv,
'placa' => $placa,
'error' => $resultado['error_message'] ?? 'Desconocido',
@ -453,7 +454,7 @@ public function consultarVehiculo(?string $niv = null, ?string $placa = null)
unset($ch);
}
} catch (Exception $e) {
logger()->error('REPUVE consultarVehiculo: Excepción', [
Log::channel('repuve_nacional')->error('REPUVE consultarVehiculo: Excepción', [
'niv' => $niv,
'placa' => $placa,
'exception' => $e->getMessage(),
@ -674,7 +675,7 @@ private function parseRoboResponse(string $soapResponse, string $valor): array
preg_match('/<return>(.*?)<\/return>/s', $soapResponse, $matches);
if (!isset($matches[1])) {
logger()->error('REPUVE parseRoboResponse: No se encontró tag <return>', [
Log::channel('repuve_nacional')->error('REPUVE parseRoboResponse: No se encontró tag <return>', [
'soap_response' => substr($soapResponse, 0, 500),
'valor' => $valor,
]);
@ -692,7 +693,7 @@ private function parseRoboResponse(string $soapResponse, string $valor): array
if (preg_match('/(ERR|ERROR|err|error):(-?\d+)/i', $contenido, $errorMatch)) {
$errorCode = $errorMatch[2];
logger()->warning('REPUVE parseRoboResponse: Servicio retornó error', [
Log::channel('repuve_nacional')->warning('REPUVE parseRoboResponse: Servicio retornó error', [
'error_code' => $errorCode,
'contenido' => $contenido,
'valor' => $valor,
@ -700,7 +701,7 @@ private function parseRoboResponse(string $soapResponse, string $valor): array
return [
'has_error' => true,
'is_robado' => false,
'es_robado' => false,
'error_code' => $errorCode,
'error_message' => "Error REPUVE código {$errorCode}",
'raw_response' => $contenido,
@ -718,7 +719,7 @@ private function parseRoboResponse(string $soapResponse, string $valor): array
$roboData = [
'has_error' => false,
'is_robado' => $isRobado,
'es_robado' => $isRobado,
'indicador' => $indicador,
'fecha_robo' => $valores[1] ?? null,
'placa' => $valores[2] ?? null,
@ -732,7 +733,7 @@ private function parseRoboResponse(string $soapResponse, string $valor): array
// Log importante si está robado
if ($isRobado) {
logger()->warning('REPUVE: Vehículo reportado como ROBADO', [
Log::channel('repuve_nacional')->warning('REPUVE: Vehículo reportado como ROBADO', [
'valor_buscado' => $valor,
'niv' => $roboData['niv'],
'placa' => $roboData['placa'],
@ -741,7 +742,7 @@ private function parseRoboResponse(string $soapResponse, string $valor): array
'denunciante' => $roboData['denunciante'],
]);
} else {
logger()->info('REPUVE: Vehículo NO reportado como robado', [
Log::channel('repuve_nacional')->info('REPUVE: Vehículo NO reportado como robado', [
'valor_buscado' => $valor,
]);
}
@ -750,7 +751,7 @@ private function parseRoboResponse(string $soapResponse, string $valor): array
}
// Si no tiene formato reconocido
logger()->error('REPUVE parseRoboResponse: Formato desconocido', [
Log::channel('repuve_nacional')->error('REPUVE parseRoboResponse: Formato desconocido', [
'contenido' => $contenido,
'valor' => $valor,
]);

View File

@ -137,11 +137,12 @@
],
'padron_estatal' => [
'driver' => 'daily',
'driver' => 'single',
'path' => storage_path('logs/padron-estatal.log'),
'level' => 'debug',
'days' => 14,
'replace_placeholders' => true,
],
'repuve_nacional' => [
'driver' => 'single',
'path' => storage_path('logs/repuve-nacional.log'),
],
],
];