SAS9

Tipps zur Überwachung von SAS-Protokollen in Echtzeit unter Windows

L'équipe WeAreCAS 9 Aufrufe

Für SAS©-Entwickler, die an die Unix-Umgebung gewöhnt sind, ist der Befehl tail -f ein unverzichtbarer Reflex: Er ermöglicht es, die Protokolldatei während der Ausführung eines Programms live zu beobachten. Beim Wechsel zu einer Windows-Umgebung (insbesondere bei Ausführungen im „Batch“-Modus) wird diese Aufgabe jedoch oft frustrierend. Windows sperrt häufig Dateien, die gerade geschrieben werden, und verhindert so deren Lektüre, oder das Pufferungssystem (Buffering) lässt die Datei minutenlang leer (0 KB).

Hier ist eine Zusammenstellung von Lösungen und Tipps aus dem Austausch zwischen Experten, um diese Einschränkungen unter Windows zu umgehen.

Das Sperrproblem: Welchen Editor wählen?

Eines der Hauptprobleme unter Windows ist die Meldung „Zugriff verweigert“ oder die Unmöglichkeit, eine Protokolldatei zu öffnen, während SAS© hineinschreibt.

  • Zu vermeiden: WordPad. Obwohl WordPad Zeilenumbrüche in großen Dateien besser handhabt, neigt es dazu, den konkurrierenden Zugriff schlecht zu verwalten und kann das Öffnen einer von SAS© verwendeten Datei verweigern.

  • Zu bevorzugen: Der Editor (Notepad). Entgegen der landläufigen Meinung gelingt es dem Standard-Editor von Windows oft, Protokolldateien im schreibgeschützten Modus zu öffnen, während SAS© läuft, wo WordPad versagt.

  • Der Trick mit dem Webbrowser: Eine wenig bekannte, aber sehr effektive Lösung besteht darin, Ihre .log-Datei direkt mit einem Browser (Internet Explorer, Chrome, Edge usw.) zu öffnen. Der Browser sperrt die Datei nicht und zeigt den Text korrekt an (besonders wenn die Erweiterung .log ist, bleibt die Formatierung lesbar).

Note :
Die „Dashboard“-Lösung: PROC PRINTTO und HTML
Um über das einfache Lesen von Text hinauszugehen, können Sie Ihre Protokolle in ein HTML-Format umleiten. Dies ermöglicht die Erstellung echter Tracking-Dashboards (mit farbigen Statusanzeigen: grün für fertig, gelb für in Bearbeitung usw.).

Die Idee ist, die PROC PRINTTO-Prozedur zu verwenden, um das Protokoll in eine HTML-Datei zu leiten. Hier ist ein Beispiel für ein von der Community vorgeschlagenes Makro:
1%MACRO PRINTTO(_logPath=, _jobID=, _jobName=);
2 %LOCAL dt;
3 %LET dt = %sysFunC(dateTime(), DATETIME16.);
4
5 /* Initialisation du fichier HTML */
6 FILENAME L_PATH "&_logPath";
7 DATA _null_;
8 file L_PATH;
9 put "<PRE>"; /* Balise pour conserver le formatage */
10 RUN;
11 FILENAME L_PATH CLEAR;
12 
13 /* Redirection de la log */
14 PROC PRINTTO LOG = "&_logPath";
15 RUN;
16 
17 %PUT NOTE: Job &_jobID - &_jobName a demarre a &dt;
18%MEND;
Indem Sie diese HTML-Datei in einem Browser öffnen und die automatische Aktualisierung verwenden, können Sie den Fortschritt Ihrer Verarbeitungen bequem verfolgen.

Das Problem der leeren Datei (Pufferung)

Selbst wenn es Ihnen gelingt, die Datei zu öffnen, kommt es oft vor, dass ihre Größe bei 0 KB stehen bleibt oder sich über längere Zeiträume nicht aktualisiert, obwohl das Programm läuft.

Dies ist ein Problem der Pufferung (Buffering). SAS© (und das Betriebssystem) speichert Informationen im Speicher, bevor sie zur Leistungsoptimierung in Blöcken (Seiten) physisch auf die Festplatte geschrieben werden.

Wie erzwingt man das Schreiben auf die Festplatte?

Es gibt eine wenig dokumentierte, aber für diesen speziellen Fall sehr nützliche Startoption (invocation option): -unbuflog.

  • Verwendung: Diese Option muss in Ihrer SAS©-Startbefehlszeile oder Ihrer Konfigurationsdatei (sasv9.cfg) hinzugefügt werden.

  • Wirkung: Sie weist SAS© an, das Protokoll nicht zu „puffern“ und die Zeilen nach und nach zu schreiben.

  • Einschränkungen: Obwohl sehr nützlich, garantiert diese Option nicht immer eine sekundengenaue Aktualisierung (dies hängt auch von der Festplattenauslastung und dem Betriebssystem ab), aber sie reduziert die Verzögerung beim Erscheinen der Protokolle erheblich.

Sie können dies auch mit der Option -logparm kombinieren: -logparm "write=immediate rollover=session"

4. Drittanbieter-Tools: Unix auf Windows bringen

Wenn Ihnen tail -f zu sehr fehlt, besteht die radikale Lösung darin, Dienstprogramme zu installieren, die Unix-Befehle auf Windows portieren. Tools wie GnuWin32, UnxUtils oder Cygwin ermöglichen es Ihnen, tail unter Windows zu verwenden, um Ihre Protokolldateien genau wie auf einem Linux-Server zu überwachen.

Um einen langen SAS©-Job unter Windows zu überwachen:

  1. Verwenden Sie nicht WordPad.

  2. Verwenden Sie den Editor oder Ihren Webbrowser, um die Datei anzuzeigen, ohne sie zu blockieren.

  3. Fügen Sie die Option -unbuflog beim Start von SAS© hinzu, um das Schreiben der Protokolle auf die Festplatte zu beschleunigen.