Alle Artikel über "Debug"

PROFFIX REST-API Live Debugging

- - IT, Snippets, Web

Das Debuggen von Applikationen mit der PROFFIX REST-API ist gerade für komplexere Projekte suboptimal, da die Logfiles als reine Textfiles vorliegen. Mit folgender Konfiguration sind die Logfiles der PROFFIX  REST-API nicht nur sortier- und kategorisierbar sondern auch immer live verfügbar.

Das Problem

Die PROFFIX REST-API schreibt Logfiles im Textformat in einen Ordner log. Das sieht dann so aus:

2017-10-06 13:37:39.7168: INF: [PxRestApi.Authentication.PxAuthenticationMiddleware]: PROFFIX was not authenticated. Failure message: Nicht authentifiziert. 
2017-10-06 13:37:39.7939: DBG: [Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware]: The request path /pxapi/v2/ADR/Kontakttyp does not match a supported file type 
2017-10-06 13:37:39.7939: DBG: [Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware]: The request path /pxapi/v2/ADR/Kontakttyp does not match a supported file type
2017-10-06 13:37:39.7939: DBG: [Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware]: DELETE requests are not supported

Für eine einfache Verwendung oder kleine Fehler mag das ausreichen. Jeder der aber einmal etwas komplexere Applikationen (wie etwa pApp – das App für PROFFIX) mit mehreren, verschachtelten Interaktionen debuggt hat, weiss wie mühsam das wird.

Deshalb hier eine bessere und vollständig individualisierbare Alternative – die übrigens auch für andere Logfiles funktioniert.

Die Lösung

Textfile mit nxlog parsen

NXLog ist ein Tool das sowohl für die Sammlung von Logfiles als auch das Parsing von Logfiles genutzt werden kann. Und das Beste daran – in der Community Version ist es absolut kostenlos.

Diese kann man hier herunterladen, anschliessend ganz gewohnt installieren.

NXLog selbst wird über die Datei nxlog.conf konfiguriert, die man gewöhnlich im Ordner C:\Program Files (x86)\nxlog\conf findet.

Um die Logfiles der PROFFIX REST-API zu parsen kann man folgende, vorkonfigurierte Config verwenden:

define ROOT C:\Program Files (x86)\nxlog
define CERTDIR %ROOT%\cert

Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log

<Input watchfile>
   Module im_file
## Pfad zum Ordner Log der REST-API Instanz anpassen
   File 'C:\\PXREST\\PXDEMO\\logs\\*.txt'
## Verwirft uninteressante Logs
   Exec if ($raw_event =~ /(The request path) (\S+) (does not match a supported file type)/) drop(); \
## Splittet Logs mit Regex auf
   Exec if $raw_event =~ /^(\S+ \S+): (\S+)\:\s\[+(\S+)\]\:\s(.*)/\
                { \
                  $EventTime = parsedate($1); \
                  $Message = $2+' '+$4; \
                  $SourceName = $3; \
## Syslog Severity / Für Papertrail unnötig
##       if $2 =~ /DBG/  $SyslogSeverity = 7; \
##       else $SyslogSeverity = 6; \
                } \
  SavePos TRUE  
  Recursive TRUE
</Input>

<Processor filewatcher_transformer>
  Module pm_transformer
  OutputFormat syslog_rfc5424
</Processor>

<Output syslogout>
       Module om_ssl
## Papertrail Host und Port anpassen
       Host xxxx.papertrailapp.com
       Port xxxxx
       CAFile %CERTDIR%/papertrail-bundle.pem
       AllowUntrusted FALSE
</Output>
<Route 1>
	Path watchfile => filewatcher_transformer => syslogout
</Route>

Diese Konfiguration erstellt aus dem PROFFIX REST-API Log automatisch ein Syslog, der per Netzwerk an beliebige Empfänger gesendet werden kann  – und zwar live. Oder anders ausgedrückt – sobald ein Log-Ereignis eintritt, versendet NXLog das geparste und aufbereitete Ereignis automatisch.

Papertrailapp für Live – Log nutzen

Grundsätzlich könnte man mit NXLog praktisch jeden Log – Empfänger nutzen (z.B. Synology NAS Protokollcenter, Windows Ereignisprotokoll…)

Der Vorteil von Papertrailapp sind aber die diversen Filter – und Syntaxtypen kombiniert mit der Möglichkeit, Log – Events auch an weitere Benutzer freizugeben.

  1. Account erstellen unter https://papertrailapp.com
  2. Unter Add System ein neues System hinzufügen
  3. Den Log – Endpunkt (z.B:  logs5.papertrailapp) sowie den Port (z.B. 45353) von Papertrail in die NXLog – Konfiguration übertragen (ist auskommentiert).
  4. Das Zertifikat von Papertrail unter https://papertrailapp.com/tools/papertrail-bundle.pem herunterladen und im Ordner C:\Program Files (x86)\nxlog\cert abspeichern
  5. Den Dienst nxlog neu starten.

Eine detailliertere Anleitung in Englisch gibts auch hier: https://help.papertrailapp.com/kb/configuration/configuring-remote-syslog-from-windows/

Anschliessend kann man sich auf Papertrailapp.com einloggen und sollte bereits erste Logs sehen:

PROFFIX REST API Live Log

Anschliessend kann man unter Settings -> Event Viewer auch noch weitere Filter konfigurieren und auch weitere Benutzer (z.B. Entwickler) hinzufügen.

Papertrail PROFFIX REST Custom_Filter

Dieser Filter macht die Logkategorien Debug, Trace und Info klick- und sortierbar.