Debug Logger (Entwickler Bundle)
"swoopde/contao-debug-logger-bundle": "^1.0"
Funktionen
- eine zentrale Debug-Konfiguration pro registrierter Source
- Einstellungen vollständig im Contao-Backend
- Debugging pro Source aktivierbar
- Credentials können bewusst unmaskiert geloggt werden (`debugCredentials`)
- File-Logging mit frei einstellbarem Dateipfad
- Datenbank-Logging
- File + Datenbank gleichzeitig
- Maskierungswörter: ein Begriff pro Zeile
- Maskierungswerte: ein konkreter Wert pro Zeile
- Maskierungswerte werden mit AES-256-GCM verschlüsselt gespeichert
- zentrale Datenbank-Logansicht als Contao-Child-Tabelle
- der **Logs**-Button wird nur angezeigt, wenn DB-Logging für die Source aktiv ist
- Fehlerhinweis im Backend, wenn `kernel.secret` / `APP_SECRET` geändert wurde und gespeicherte Maskierungswerte nicht mehr entschlüsselt werden können
- fail-safe: bei nicht entschlüsselbaren Maskierungswerten wird für die betreffende Source nichts geloggt, solange `Credentials loggen` deaktiviert ist
füge in deinem Bundle hinzu:
composer.json
"require": {
"swoopde/contao-debug-logger-bundle": "^1.0"
}
Source setzen und optional Defaultwerte
neue Datei anlegen in deinem Bundle
src/Debug/<YOURBUNDLE>DebugSource.php
wenn du vordefinierte Werte im BE haben möchtest.
<?php
declare(strict_types=1);
//Ein Beispiel
namespace Swoop\ContaoTelegramSupportBundle\Debug;
use Swoop\ContaoDebugLoggerBundle\Contract\MaskValuesProviderInterface;
use Swoop\ContaoDebugLoggerBundle\Contract\SensitiveWordsProviderInterface;
final class TelegramDebugDefaults implements SensitiveWordsProviderInterface, MaskValuesProviderInterface {
public function getSourceName(): string {
return TelegramDebugSource::NAME;
}
public function getDefaultSensitiveWords(): array {
return ['token', 'botToken', 'webhookSecret', 'secret', 'authorization', 'password',];
}
public function getDefaultMaskValues(): array {
/*
* Hier zunächst nur statische Werte.
*
* Dynamische Werte wie der tatsächliche Bot-Token sollten
* später über einen Value-Provider aus der TelegramConfiguration
* geliefert werden.
*/
return [];
}
public function getDefaultLogFile(): string {
return 'var/logs/telegram.log';
}
}
<?php
declare(strict_types=1);
namespace Swoop\<YOURBUNDLE>\Debug;
use Swoop\ContaoDebugLoggerBundle\Contract\MaskValuesProviderInterface;
use Swoop\ContaoDebugLoggerBundle\Contract\SensitiveWordsProviderInterface;
final class <YOURBUNDLE>DebugDefaults implements SensitiveWordsProviderInterface, MaskValuesProviderInterface {
public function getSourceName(): string {
return <YOURBUNDLE>DebugSource::NAME;
}
public function getDefaultSensitiveWords(): array {
return []; //ohnne Defaultwerte
}
public function getDefaultMaskValues(): array {
/*
* Hier zunächst nur statische Werte.
*
* Dynamische Werte wie der tatsächliche Bot-Token sollten
* später über einen Value-Provider aus der TelegramConfiguration
* geliefert werden.
*/
return [];
}
public function getDefaultLogFile(): string {
return ''; //kann leer sein
}
}
TelegramDebugSource wird durch autoconfigure: true in service.yaml automatisch erkannt.
Alternativ selber eintragen in service.yaml
yourVendor\YourBundle\Debug\TelegramDebugSource:
tags:
- { name: 'swoop.debug_source' }
Logger anwenden im Code
vorhger (Standart Logger):
$this->debug('Telegram API Request', [
'method' => $method,
'url' => $url,
'payload' => $payload,
]);
debug-logger-bundle in Verwendung. (Custom Logger mit Maskierung)
$this->debugLogger->debug(
TelegramDebugSource::NAME,
'Telegram API request',
[
'method' => $method,
'url' => $url,
'payload' => $payload,
],
);
in deinem dca im bundle noch dafür sorgen dass im BE auch der passende Abschnitt erzeugt und angezeigt wird:
use Swoop\ContaoDebugLoggerBundle\Registry\DebugLoggerRegistry;
DebugLoggerRegistry::register(
'tl_swoop_telegram',
'telegram',
);
//Weitere Beispiele
DebugLoggerRegistry::register('tl_swoop_telegram', 'telegram');
DebugLoggerRegistry::register('tl_swoop_sso', 'sso');
DebugLoggerRegistry::register('tl_irgendein_bundle', 'irgendwas');
Einstellungen
Telegram-Webhook konnte nicht registriert werden: Bad Request: bad webhook: Failed to resolve host: Name or service not known
Dann ist https://xxxx.trycloudflare.com/telegram/webhook wahrscheinllich gerade nicht erreichbar.
