Einblicke in das Logging-System von TYPO3 und Konfiguration von Log Writern

TYPO3, als eines der führenden Content-Management-Systeme, bietet nicht nur leistungsstarke Funktionen für die Website-Verwaltung, sondern auch ein ausgefeiltes Logging-System. In diesem Artikel tauchen wir ein in die Welt des TYPO3-Loggings und erfahren, wie wir es konfigurieren können, insbesondere unter Verwendung von Log Writern.

1. Das Logging-System von TYPO3 verstehen:

TYPO3 verwendet ein flexibles Logging-System, das es ermöglicht, Protokolldateien über verschiedene Kanäle zu führen. Dieses System ist besonders hilfreich bei der Fehlersuche und Überwachung der Systemaktivitäten.

2. Konfiguration des Logging-Systems:

Die Konfiguration des Logging-Systems in TYPO3 erfolgt hauptsächlich über das globale Konfigurationsarray $GLOBALS['TYPO3_CONF_VARS']['LOG']. Dieses Array spiegelt die Namens- und Klassenhierarchie des TYPO3-Projekts wider.

Beispiel: Allgemeine Konfiguration für das Logging-System:

$GLOBALS['TYPO3_CONF_VARS']['LOG'] = [
    'TYPO3' => [
        'CMS' => [
            'Core' => [
                'General' => [
                    'writerConfiguration' => [
                        \Psr\Log\LogLevel::DEBUG => [
                            \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
                                'logFile' => \TYPO3\CMS\Core\Core\Environment::getVarPath() . '/log/typo3.log',
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
];

Hier wird ein `FileWriter` für Debug-Meldungen konfiguriert, der in die Datei `typo3.log` schreibt.

3. Log Writer verstehen und konfigurieren:

TYPO3 bietet verschiedene eingebaute Log Writer, von Datei- bis Datenbank-Loggern. Hier sind einige wichtige:

- FileWriter:

Der `FileWriter` schreibt Log-Meldungen in eine Datei. Hier ist ein einfaches Beispiel:

$GLOBALS['TYPO3_CONF_VARS']['LOG']['MyExtension']['MyClass']['writerConfiguration'] = [
    \Psr\Log\LogLevel::ERROR => [
        \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
            'logFile' => \TYPO3\CMS\Core\Core\Environment::getVarPath() . '/log/my_extension.log',
        ],
    ],
];

Dies konfiguriert einen `FileWriter` für Fehlermeldungen der Klasse `MyClass` in der Erweiterung `MyExtension`.

- DatabaseWriter:

Der `DatabaseWriter` speichert Log-Meldungen in einer Datenbanktabelle. Hier ist ein Beispiel:

Anlegen der Datenbanktabelle:

CREATE TABLE tx_my_extension_log
(
    request_id varchar(13) DEFAULT '' NOT NULL,
    time_micro double(16, 4) NOT NULL default '0.0000',
    component varchar(255) DEFAULT '' NOT NULL,
    level tinyint(1) unsigned DEFAULT '0' NOT NULL,
    message text,
    data text,

    KEY request (request_id)
);

Die oben gezeigte SQL-Anweisung erstellt eine Tabelle `tx_my_extension_log` mit den erforderlichen Spalten für den `DatabaseWriter`.

Konfiguration des DatabaseWriters:

$GLOBALS['TYPO3_CONF_VARS']['LOG']['MyExtension']['MyClass']['writerConfiguration'] = [
    \Psr\Log\LogLevel::DEBUG => [
        \TYPO3\CMS\Core\Log\Writer\DatabaseWriter::class => [
            'logTable' => 'tx_my_extension_log',
        ],
    ],
];

In diesem Beispiel wird ein `DatabaseWriter` für Debug-Meldungen konfiguriert, der in die Tabelle `tx_my_extension_log` schreibt. Beachte, dass die Tabelle manuell erstellt werden muss.

Die detaillierte Anleitung zur Erstellung der Datenbanktabelle ermöglicht eine nahtlose Integration des `DatabaseWriters` in dein TYPO3-Projekt. Nutze diese Informationen, um das volle Potenzial des Logging-Systems auszuschöpfen und deine Anwendung zu optimieren.

4. Fazit:

Die Konfiguration des Logging-Systems in TYPO3 ermöglicht eine detaillierte Kontrolle über Protokolldaten. Mit den verschiedenen Log Writern können Entwickler spezifische Anforderungen an die Protokollierung erfüllen. Dies ist entscheidend für die Fehlersuche und das Monitoring von TYPO3-Anwendungen. Nutzen Sie diese Werkzeuge, um Ihr TYPO3-Projekt optimal zu verwalten und zu warten.

Kategorien

TYPO3 Devblog

Tags

TYPO3 PHP Devtools

Hat Dir der Artikel gefallen?