Webseiten-Werkzeuge

Benutzer-Werkzeuge


Langzeitaufzeichnungen

Anforderung

Manchmal kommt es vor, dass sich ein print2forms-Client oder ein Gateway scheinbar sporadisch anders verhält als erwartet. Solchen Problemen ist naturgemäß sehr schwer beizukommen, wenn die Zeiten zwischen den unerwarteten Ereignissen den Bereich von Tagen oder Wochen erreichen, oder wenn das Ereignis erst mit einer längeren Verzögerung bemerkt werden kann.

In aller Regel sind die Log-Dateien dann schon nicht mehr aktuell, weil sie aufgrund der Größenbeschränkungen für Log-Dateien wieder überschrieben worden sind. Selbst die maximal verfügbaren zweimal 128MB sind bei viel genutzten Clients oder Gateways schnell aufgebraucht.

Ein weiteres im Betrieb auftretendes Problem ist, dass Druckaufträge extremer Größe aufgezeichnet werden sollen. Druckaufträge mit vielen farbigen Bildern können leicht in den Bereich hunderter Megabyte wachsen, sodass die Aufzeichnung in einer Log-Datei sowieso nicht möglich ist.

Die Größe der Log-Dateien einfach nicht zu beschränken ist deshalb keine Lösung, weil extrem große Dateien nicht so ohne weiteres in einem normalen Editor geöffnet werden können, oder die Editoren immer langsamer werden.

Es wäre also hilfreich, wenn man für solche Fälle die Aufzeichnungen und die Ablaufverfolgung beliebig lange fortschreiben könnte.

Realisierung

Der Mechanismus zum Schreiben der Log-Dateien innerhalb der print2forms-Clients und Gateways wurde in zweifacher Hinsicht erweitert.

Zum einen kann eingestellt werden, daß die Log-Dateien beim Wechsel nicht mehr mit dem Namenssuffix '_old', sondern mit einem Zeitstempel aus Datum und Uhrzeit versehen werden. Zum zweiten kann unmittelbar nach dem Umbennenen der aktuellen Log-Datei eine Kommandozeile ausgeführt werden, in der einzelne Befehle ausgeführt oder ganze Skripte und Programme gestartet werden können.

Um diesen Mechanismus zu aktivieren, müssen in der Registry des jeweiligen Clients oder Gateways ein neuer Eintrag vom Typ 'DWORD' und dem Namen 'Trace', sowie ein Eintrag vom Typ 'REG_SZ' und dem Namen 'TraceCommand' angelegt werden.

Die Registry des Client-/Gateway-Services findet sich unter

HKEY_LOCAL_MACHINE\SOFTWARE\SPE Systemhaus GmbH\print2forms\p2fService\4DDBDD81

wobei die hexadezimale Zahl am Ende die Kennung des jeweiligen Clients oder Gateways ist. Diese Zahl kann dem Kontrollfeld des Client-/Gateway-Services entnommen werden.

Der numerische Wert 'Trace' enthält in den unteren vier Bit die Steuerung für das Einfügen des Zeitstempels in den Namen der Log-Datei. Das Bit mit dem Wert 1 steht für die Ablaufverfolgung, das Bit mit Wert 2 steht für die Indexdatei, das Bit mit dem Wert 4 steht für die Aufzeichnung des Host-Datenstroms und das Bit mit dem Wert 8 steht für die Aufzeichnung des Druckerdatenstroms.

Die Zeichenkette 'TraceCommand' enthält die auszuführende Kommandozeile, in der Regel ein direkter Befehl oder der Start eines Programms oder Skriptes.

Kommandozeile

Für die Parameterübergabe zwischen Client oder Gateway und dem in der Kommandozeile zu startenden Befehl oder Programm sind drei Platzhalter definiert worden:

Platzhalter Bedeutung
%P Pfadangabe für das Verzeichnis, in dem die Log-Dateien eines Clients oder Gateways abgelegt werden.
%N Name der Log-Datei mit dem Zeitstempel ohne jede Pfadangabe.
%F Der komplette Name der Log-Datei inklusive Pfadangabe. Dies ist immer die Datei mit dem Zeitstempel im Namen, nicht die aktuell benutzte Log-Datei. Diese Datei ist ohne irgendwelche Locks und kann beliebig verarbeitet (und gelöscht) werden.
%T Der Typ der Log-Datei. Dabei steht ein 'l' für die Ablaufverfolgung, ein 'i' für die Indexdatei, ein 'h' für den Host-Datenstrom und ein 'p' für den Druckerdatenstrom. Dieser Parameter kann verwendet werden, um in einem Skript schnell typabhängige Entscheidungen zu treffen.


Beispiele

Ein erstes einfaches Beispiel könnte darin bestehen, die Log-Datei jedes mal auf ein anderes Laufwerk zu kopieren. Das ist mit einem einfachen DOS-Befehl schnell erledigt. Mit '%F' wird der Name inlusive Pfad der Log-Datei als Quelle eingesetzt, und ein festes Verzeichnis, mit '%N' ergänzt um den Namen der Log-Datei dient als Ziel.

cmd /s /c "move /Y "%F" "D:\Logs\%N""

Diese Art des Vorgehens birgt allerdings die Gefahr, daß das Ziellaufwerk vollgeschrieben wird, weil keinerlei Größenüberwachung stattfindet. Das sollte man hier im Auge behalten. Eine gute Idee wäre, das Zielverzeichnis vom Betriebssystem her als komprimierbar einzustellen.

Ein weiteres Beispiel soll die anfallenden Log-Dateien explizit in komprimierter Form in einem Archiv aufsammeln. Da die Log-Dateien als lange Texte sehr gut komprimieren, ist das eine sehr platzsparende Methode.

Für die verschiedenen Arten von Log-Dateien werden jeweils eigene Archive angelegt. Das ist notwendig, weil sich sonst beim nahezu gleichzeitigen Wechsel von Log-Dateien Zugriffsprobleme auf das Archiv ergeben. Erreicht wird das, indem der Typ der Log-Dateien mit '%T' in den Namen des Archivs mit eingebunden wird. Nachdem die Log-Datei komprimiert im Archiv abgelegt wurde, wird die unkompirmierte Version gelöscht.

cmd /s /c "C:\Programme\7-Zip\7z a -tzip "%P\Logs_%T.zip" "%F" | del "%F""

In diesem Beispiel wurde das zu schreibende Archiv bewusst in das gleiche Verzeichnis gelegt, wie die Log-Dateien. Dadurch wird das Laufwerk natürlich auch irgendwann einmal voll, allerdings gibt es in den print2forms-Clients und -Gateways einen Überwachungsmechanismus, der bei zuwenig Platz (256 MB) auf dem Laufwerk die Erzeugung von Log-Dateien einstellt.

Durch den Aufruf von externen Perl- oder PowerShell-Skripten lassen sich auch sehr viel komplexere Aufgaben erledigen. Zum Beispiel kann mit einem Filter festgestellt werden, ob in einer Log-Datei ein Fehler gelistet wurde, und im Falle, daß das so ist, eine E-Mail mit der Log-Datei als Anhang versendet werden. So ist eine permanente, automatische Überwachung realisierbar.

Hinweise

  • Das hier präsentierte Vorgehen verlangt eine print2forms-Version Installer 276 oder höher.
  • Der hier beschriebene Mechanismus funktioniert nur, wenn die maximale Größe der Log-Dateien 16MB oder größer ist. Bei kleineren Dateigrößen ist die Gefahr gross, daß die Log-Datei schon wieder gewechselt wird, während der vorhergehende Befehl noch das Archiv blockiert.
  • Die maximale Dateigröße sollte vor allem bei Gateways besser im Bereich oberhalb dieser 16MB liegen. Da die Gateways mit maximal 1200 Seiten pro Minute arbeiten, kann es bei grafiklastigen Druckaufträgen nur Sekunden dauern, bis eine Log-Datei voll wird. Skripte oder Programme für aufwändige Nachbearbeitung müssen hier so geschrieben werden, daß sie zeitgleich laufen können. Gegebenenfalls müssen die Skripte sogar über Semaphore serialisiert werden.
  • Eine Langzeitaufzeichnung sollte natürlich nur im Bedarfsfall für möglichst kurze Zeit gemacht werden, weil sie erhebliche Ressourcen auf dem Rechner binden kann, wenn Log-Dateien angesammelt werden. Wenn das Aufzeichnen beendet werden soll, muss der Wert 'Trace' innerhalb der Registry wieder auf den Wert Null gesetzt oder komplett gelöscht werden. Der Wert 'TraceCommand' kann für spätere erneute Aktivierung stehen gelassen werden. Der betroffene Client oder das betroffene Gateway müssen danach angehalten und neu gestartet werden.
print2forms/tips/tip59.txt · Zuletzt geändert: 2018-08-31 10:07 (Externe Bearbeitung)