Gestion des Logs SAS : Comment automatiser la redirection et ne plus jamais perdre une erreur

Niveau de difficulté
Débutant
Publié le :
Simon

Le Conseil de l'Expert

Simon
Expert SAS et fondateur.

Lorsque vous utilisez PROC PRINTTO pour rediriger la log vers un fichier externe (ce que fait probablement votre macro logToFile), la fenêtre Log de votre interface SAS semblera figée ou vide pendant l'exécution; c'est un comportement normal, mais il est impératif de prévoir une gestion d'erreur robuste qui exécute PROC PRINTTO LOG=LOG; RUN; même en cas de plantage, sinon vous devrez redémarrer votre session pour récupérer l'affichage standard.

Le script définit une macro '%test_logToFile' qui séquence différents états de journalisation : désactivation (%logOff), redirection vers un fichier (%logToFile avec %getPath), et retour à la fenêtre standard (%logReset). Des étapes 'DATA _NULL_' invoquant une fonction inexistante ('funcnotexit') sont utilisées pour générer des messages dans la log et valider le comportement de la redirection.
Analyse des données

Type : CREATION_INTERNE


Aucune table n'est créée ou lue. Utilisation exclusive de l'étape DATA _NULL_ pour des tests logiques.

1 Bloc de code
MACRO DEFINITION
Explication :
Définition de la macro contenant la séquence de test : messages dans la log, changement de destination de la log, et exécution de code provoquant potentiellement des erreurs/notes pour vérifier la capture.
Copié !
1%macro test_logToFile;
2 
3 %put log to window;
4 %logOff;
5 DATA _null_;
6 x=funcnotexit(0);
7 RUN;
8 %put log muted;
9 %logOn;
10 
11 %logToFile(path=%getPath,file=test_logToFile);
12 %put log to file;
13 DATA _null_;
14 x=funcnotexit(0);
15 RUN;
16 
17 %logReset;
18 %put log to window;
19 DATA _null_;
20 x=funcnotexit(0);
21 RUN;
22 
23%mend;
2 Bloc de code
MACRO CALL
Explication :
Appel et exécution de la macro de test définie précédemment.
Copié !
1%test_logToFile;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.