Zum Inhalt
04. November 2024

Remote Error Log in VS Code anzeigen

Zum Abschluss meiner kleinen Serie mit kleinen aber feinen Tools, die einige Abläufe in VS Code für Webentwickler vereinfachen sollen, stelle ich heute meine Strategie vor, wie ich mit Errors in PHP umgehe.

Folgendes Szenario: Sie entwickeln eine WebApp, die zu einem großen Teil auf PHP basiert. PHP ist eine serverseitige Programmiersprache, d.h. sie muss auf einem Server laufen. Folglich muss auch ein lokaler Server (z.B. Apache eingerichtet über XAMPP) auf dem Rechner laufen, um die Scripte debuggen zu können. Dafür muss XDEUG eingerichtet sein. Beides ist immer sehr aufwendig. Neben diesem Aufwand gibt es einen weiteren Nachteil - sie können nie sicher sein, dass das Setting des lokalen Servers mit dem Remote Server, auf dem die Seite liegen wird, übereinstimmt. Möglicherweise haben Sie gar keine Möglichkeit, um z.B. gewisse Server Module zu laden, da ihr Webspace in der Nutzung ohne root-Rechte eingeschränkt ist.

Meine Strategie ist es daher, immer direkt auf dem Server zu entwicklen. Das kann man machen, in dem man den eigenen Webspace per SSH oder FTP in VS Code einbindet. Es gibt da aber eine noch bessere Lösung. Mit der SFTP Erweiterung für VS Code kann ein Script im Workspace hinterlegt werden, welches automatisch bei jedem Speichern der Datei lokal eine Kopie auf dem Server ablegt. Wenn man seine lokalen Files dann noch in einem CloudSpeicher ablegt, hat das zusätzlich den Vorteil, das a) ein Backup der Datei automatisch existiert und b) die Dateien auf einem 2. Rechner, z.B. einem Notebook für unterwegs synchronisiert sind.

Jetzt hat man aber keinen lokalen Server, d.h. wie kann man seinen Code nun auf Fehler prüfen und diese bereinigen? Das klassische "debuggen" ist so nicht mehr möglich, aber das muss auch gar nicht sein. PHP Fehler werden auf einem Webserver in einer error.log Datei protokolliert. Jedes Mal, wenn in dem PHP Code eine Fehler- oder eine Warningmessage ausgegeben wird, wird diese in diese Datei geschrieben. Natürlich hat man keine Zeit, ständig diese Datei auf dem Server einzusehen. Also habe ich mir folgendes Bash-Script überlegt:

  • Ich kopiere die LOG Datei von dem Remote Server in ein lokales Verzeichnis
  • Ich erzeuge einen Extrakt der FehlerLogs mit den letzten 20 Zeilen
  • Diese 20 Zeilen kopiere ich eine lokale Variable, die ich in einem einfachen PopUp Fenster anezeigen lasse
  • Alle Schritte sind automatisiert, werden als Task in VS Code definiert und mit einem Tastaturkürzel versehen.

Dieses Bash-Script sieht so aus:

Als PopUp Tool nutze ich das Programm "yad" ⧉, da man mit notify-send sehr limitiert ist. yad existiert für sämtliche Linux-Distributionen.

Dieses Script können Sie dann nach demselben Prinzip wie in meinen anderen Blog-Einträgen ⧉ als VS Code Task definieren und dann mit einen Keyboard Shortcut versehen. Da das SFTP Plugin eine Änderung der Datei sofort hochlädt, können Sie Fehler sofort abrufen. Den Teil, in dem sie EDGE ebenfalls mit Keyboard-Shortcuts versehen haben, den haben Sie ja in diesem Post ⧉ schon kennengerlernt.

Man kann dieses Prinzip aber noch weiter ausbauen. Angenommen Sie wollen gar keine Fehler abrufen, sondern Sie möchten einen ganzen Ablauf mit seinen einzelnen Schritten protokollieren, dann können Sie in ihrem PHP File so eine Funktion definieren, die einen beliebigen Input in eine debug.log mit Zeitstempel hineinschreibt:

Statt der Error-Log Datei des Servers lesen Sie dann diese Datei nach demselben Prinzip aus. Diese Strategie lässt sich immer weiter verfeinern, mit weiteren Nebenprozessen, einer kompletten Ablaufdokumenation usw. - damit die Files nicht zu groß werden, können Sie auch einen Löschvorgang in PHP voranschalten.

Wichtig ist, dass Sie das Ergebnis der Code-Ausführung, seien es Fehler oder Einblicke in den Code-Ablauf, ganz einfach mit nur einem Tastendruck sofort einsehen können.