Inhaltsverzeichnis

LogAddon.txt

Einleitung

Nach Aktivierung dieser Logging-Art kann man gezielt aus einem AddOn heraus hier Einträge protokollieren. Sehr hilfreich bei der AddOn-Programmierung und späterer Fehlersuche. Bei vielen AddOns kann man die Protokollierung in der AddOn-Konfig einschalten (dafür muss aber zuerst LogAddOn.txt aktiviert sein, siehe Was ist Logging).


Was wird protokolliert?

Programmiert man dann im AddOn den Befehl Cockpit.WriteLog := 'Hallo';,
so schreibt es dann in das LogAddOn.txt-File ein Hallo mit Zeitstempel wie folgt:

[29.09.2020 17:59:44 265] Hallo

Ab Version 3.3.1 build 484 ist der Zeitstempel um die Belegung des Arbeitsspeichers durch die gesamte Anwendung Cockpit-XP erweitert…

[13.04.2023 11:17:46 315] [107808 KB] Hallo …

Die Einträge werden immer angehängt, sprich die Datei wächst und wächst. Aus dem Grund sollte man LogAddOn.txt nach Gebrauch\Fehlersuche auch wieder deaktivieren, ansonsten kann es u.U. zu Perfomance-Problemen kommen.


Wo liegt das File?

Das File liegt bei einer Standard-Installation immer im Cockpit-XP Datenverzeichnis

Der reale Speicherort kann je nach Version und Anwender unterschiedlich sein:


Generierung der Inhalte

Die Inhalte der Datei LogAddOn.txt müssen durch den Entwickler im AddOn-Code generiert werden. Dazu steht der Befehl Cockpit.WriteLog zur Verfügung. Ein Beispiel und die Textausgabe in der LogAddOn.txt sind nachfolgend zu finden.


Code-Beispiel

{ Pascal Script Engine }
{ Event: KeyDown }
{ Parameter: Cockpit.Parameter=<TastenCode> }

var
  sEventName : String;
  sNameAddOn : String;
  iPosBackslash : Integer;
  iTaste : Integer;
  

// Hauptprogramm ab hier -->
begin

  // EventID liefert den Namen des Events
  case Cockpit.EventID of
     0 : sEventName := 'StartZiel           ';
     1 : sEventName := 'ChangeRealTimeStatus';
     2 : sEventName := 'StartZielSichTime   ';
     3 : sEventName := 'TankenEinfahrt      ';
     4 : sEventName := 'TankenAusfahrt      ';
     5 : sEventName := 'TopSpeedStart       ';
     6 : sEventName := 'TopSpeedStopp       ';
     7 : sEventName := 'Rundenrekord        ';
     8 : sEventName := 'Slotrekord          ';
     9 : sEventName := 'Bahnrekord          ';
    10 : sEventName := 'SchnellsteRunde     ';
    11 : sEventName := 'DigInputEvent       ';
    12 : sEventName := 'StartRealTime       ';
    13 : sEventName := 'ChangeScreen        ';
    14 : sEventName := 'KeyDown             ';
    15 : sEventName := 'Bestrafung          ';
    16 : sEventName := 'CUSensorGruppe      ';
    17 : sEventName := 'BeforeClose         ';
    18 : sEventName := 'Startampel          ';
  else
         sEventName := 'Unbekannt           ';
  
  end;   // END case - EventID
  
  // Wert der Taste speichern
  iTaste := Cockpit.Parameter;


  // Namen des Addons ermitteln
  sNameAddOn := cpGetPackagePath;
  repeat
    iPosBackslash := Pos('\', sNameAddOn);
    Delete(sNameAddOn, 1, iPosBackslash);
  until iPosBackslash = 0;

  // Protokollierung für Fehlersuche
  if cpGetIntegerVar('WriteLogFile') = 0 then
  begin
    Cockpit.WriteLog:=sNameAddOn+' | '+sEventName+' | Pfad zum AddOn : '+cpGetPackagePath;
    Cockpit.WriteLog:=sNameAddOn+' | '+sEventName+' | Name AddOn : '+sNameAddOn;
    Cockpit.WriteLog:=sNameAddOn+' | '+sEventName+' | Wert Taste : '+IntToStr(iTaste);
    Cockpit.WriteLog:=sNameAddOn+' | '+sEventName+' | ';
  end;

end.

Der Code protokolliert in einer Textdatei den Pfad zum AddOn, extrahiert den Namen des AddOns auf dem Pfad, zeigt den Wert der gedrückten Taste im KeyDown-Event und fügt am Ende eine Leerzeile ein. Damit dieser Code universell einsetzbar wird, holt es sich per Cockpit.EventID das Event.

Die Textzeile ist entsprechend zusammengesetzt aus AddOn-Name, Event-Name, Bezeichnung und Wert der Variablen. So wird es auch in komplexen Logs möglich, auf einen Blick zu sehen, aus welchem AddOn und Event die Zeile stammt, die hier im Log eingetragen ist.

Der Inhalt der so erzeugten Log-Datei sieht folgendermaßen aus:

LogAddOn.txt
[13.04.2023 11:17:46 315] [107808 KB] SLX - Tesst Code KeyDown | KeyDown | Pfad zum AddOn            : V:\cp-datenverzeichnis\Cockpit-V2\AddOn\SLX - Snippets\SLX - Tesst Code KeyDown
[13.04.2023 11:17:46 315] [107808 KB] SLX - Tesst Code KeyDown | KeyDown | Name AddOn                : SLX - Tesst Code KeyDown
[13.04.2023 11:17:46 315] [107808 KB] SLX - Tesst Code KeyDown | KeyDown | Wert der gedrückten Taste : 222
[13.04.2023 11:17:46 315] [107808 KB] SLX - Tesst Code KeyDown | KeyDown | 



Start - FAQ - Glossar - Sitemap - Impressum