Das Deprecation Log von TYPO3 ist ein Log, welches die Funktionsaufrufe von alten Funktionen sammelt. Ist das Log eingeschaltet, ist dieses vor einem Update ein Indiz, dass evtl. Teile der Webseite nach einem Update nicht mehr korrekt funktionieren.
Log strukturieren
In der „Rohform“ ist das Deprecation Log eine lange Textwüste (TYPO3 < 4.7.x), welche nicht selten über viele MB groß ist. Damit die Menge an Informationen interpretiert werden kann, hilft es diese zu strukturieren. Die folgende Shell-Funktion entfernt doppelte und unnötige Einträge und optimiert die Ausgabe.
t3deprecation() { sed 's/\([0-9]\{2\}\)\-\([0-9]\{2\}\)\-\([0-9]\{2\}\) \([0-9]\{2\}\).\([0-9]\{2\}\). //g' $1 |sort|uniq -c -i|sort -n -r|sed 's/ \/\/ t3lib_div\:\:logDeprecatedFunction.*$//g' > short_$1; }
Ist die Funktion im Benutzerprofil hinterlegt oder einmal ausgeführt, dann kann die Funktion im Anschluss mit folgendem Befehl aufgerufen werden:
t3deprecation deprecation_6a7168e888.log
„deprecation_6a7168e888.log“ steht in diesem Fall für den Namen der Log Datei. Nachdem der Befehl ausgeführt ist (je nach Loggröße kann dies mehrere Minuten dauern), steht eine „short_deprecation_6a7168e888.log“-Datei zur Verfügung. Diese Datei hat nun folgende Vorteile:
- Doppelte Einträge wurden aus der Datei entfernt, sodass diese nicht so groß ist.
- Die Einträge sind nach Häufigkeit sortiert, wobei die häufigsten oben zu finden sind.
- Die Häufigkeit wird vor der Zeile ausgeben, sodass man ein Bild davon bekommt, was oft benutzt wird.
- Unnötige Informationen wurden entfernt, sodass die Informationen übersichtlich bleiben.
Interpretation
Liegt nun das schlanke Log vor, so kann dieses interpretiert werden. Pro Zeile ist nun ein Eintrag zu finden. Im Normalfall besteht ein Logeintrag aus einer Nachricht, welche von dem Entwickler aus dem Code kommt, und einem „Aufrufpfad„. Der Aufrufpfad listet die Funktionsaufrufe, welche bis zu der veraltet Funktion getätigt wurden. In dem Pfad muss nun geprüft werden, ob es ein Fehler ist, welchen man beheben kann oder melden sollte.
t3lib_div::GPvar() - since TYPO3 3.6 - Use t3lib_div::_GP instead (ALWAYS delivers a value with un-escaped values!) - tx_templavoila_cm1->main#2781 // tx_templavoila_cm1->main_mode#223 // t3lib_div::GPvar#291
Dabei muss stark auf die Klassennamen geachtet werden, welche einem Hinweise auf die verwendeten Extensions gibt (im Beispiel „tx_templavoila_cm1“ für TemplaVoila). Wurde eine Fremd-Extension identifiziert (oder der TYPO3 Kern), so sollte geprüft werden ob es ein Update gibt oder es sollte ein Ticket in einem passenden Bug-Tracker geöffnet werden (erst nach einem Update auf die aktuellste Version). Ist es eine eigene Extension, sollte der Fehler direkt korrigiert werden.
In manchen Fällen wird der Fehler auch durch ein TypoScript provoziert. Dies lässt sich meistens auch direkt im TS korrigiert.
Warum?
Dieses vorgehen sollte man in einem Wartungsprozess durchführen, sodass ein Gespür dafür entsteht ob und wann eine TYPO3 Installation aktualisiert werden kann. Einerseits trägt es der Performance bei, da die Logs nicht mehr geschrieben werden, zum anderen aber auch der Stabilität, weil die TYPO3 Instanz in einem Zustand ist, in dem ein Update durchführt werden kann und man weiß, dass Funktionen benutzt werden, welche weiterhin unterstützt und supported werden.
Wie geht ihr bei dem Log vor?
Dieser Beitrag wurde aus meinem alten Blog 1:1 übernommen, da ich den Blog eingestellt habe.