mivita/app/Services/MyLog.php
Kevin 7daebf32eb Logs: Kanal userabo ersetzt, Log-Mails ueber die Queue, weniger Rauschen
Log-Analyse 26.08. (P1-1, P2-1, P2-7, P2-8):
- MyLog schrieb in den nicht definierten Kanal userabo (109 EMERGENCY-
  Eintraege, laravel.log rotierte nicht mehr); jetzt abo_order.
- MyLog verschickt die Benachrichtigung ueber die Queue, ein Mailfehler
  bricht den Zahllauf nicht mehr ab. MailLog sammelt Nutzer, User-Agent
  und Zeit beim Erzeugen ein, weil der Worker keinen Request hat.
- Abgelehnte OAuth-Anfragen (falscher grant_type) werden als Warnung
  geloggt statt als Fehler gemailt.
- payments:check-accounts loggt je Berater nur noch auf debug und schreibt
  am Ende eine Zusammenfassung (geprueft, versendet, uebersprungen).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 15:41:06 +00:00

41 lines
1.3 KiB
PHP

<?php
namespace App\Services;
use App\Mail\MailLog;
use Illuminate\Support\Facades\Mail;
class MyLog
{
public static function writeLog($channel = 'payment', $context = 'error', $message = '', $data = [], $mail = true)
{
switch ($context) {
case 'notice':
\Log::channel($channel)->notice($message.' : '.json_encode($data));
break;
case 'warning':
\Log::channel($channel)->warning($message.' : '.json_encode($data));
break;
case 'info':
\Log::channel($channel)->info($message.' : '.json_encode($data));
break;
default:
\Log::channel($channel)->error($message.' : '.json_encode($data));
break;
}
if (! $mail) {
return;
}
// Die Benachrichtigung laeuft ueber die Queue: der Zahllauf darf nicht auf
// den SMTP-Roundtrip warten und ein Mailfehler darf ihn nicht abbrechen.
try {
Mail::to(config('app.exception_mail'))->queue(new MailLog($channel, $context, $message, $data));
} catch (\Throwable $e) {
\Log::channel($channel)->warning('MyLog: Benachrichtigungsmail konnte nicht zugestellt werden', [
'error' => $e->getMessage(),
]);
}
}
}