Configurer la journalisation via le fichier de configuration sasv9.cfg (option -LOGCONFIGLOC) est la méthode la plus robuste pour sécuriser vos environnements. Cela garantit que chaque session SAS, quel que soit son mode de lancement, hérite d'une structure de log normalisée.
L'en-tête dynamique (HeaderPattern) incluant l'hôte, l'OS et la version est un atout précieux pour le support technique. Ce système transforme le log SAS — souvent perçu comme un simple fichier texte — en une véritable base de connaissances structurée, prête à être indexée par des outils d'analyse de logs modernes ou des solutions de supervision
Attention : Ce code nécessite des droits administrateur.
Le script ne lit aucune donnée. Il utilise un `data _null_` step, qui est une étape de traitement sans création de jeu de données, uniquement pour exécuter des routines de journalisation.
1 Bloc de code
Commentaire
Explication : Ce bloc est un commentaire détaillé expliquant comment configurer la journalisation personnalisée dans SAS. Il décrit la modification nécessaire au fichier de configuration `sasv9_u8.cfg` et fournit le contenu d'un fichier `log_config.xml` pour activer des logs rotatifs basés sur la date et l'utilisateur. Ceci est une tâche d'administration système.
SAS Version: '%S{sup_ver_long2}', Command: '%S{startup_cmd}'"/>
23
<param name="ConversionPattern" value="%m"/>
24
</layout>
25
</appender>
26
<!-- Administration message logger -->
27
<logger name="root">
28
<level value="TRACE"/>
29
</logger>
30
<!-- Root logger -->
31
<root>
32
<appender-ref ref="RFA_TIME"/>
33
</root>
34
</logging:configuration>
35
36
3.replace (D:\server\sas94\log) with your own path;
37
38
4.restart SAS;
39
40
*/
2 Bloc de code
Macro
Explication : Appels à une série de macros personnalisées (`%lstart`, `%lfatal`, `%lerror`, etc.) pour générer des messages de log de différents niveaux de sévérité (Fatal, Error, Warn, Info, Debug, Trace). Ces macros ne sont pas standards et font partie du système de logging personnalisé démontré dans le script.
Copié !
%lstart;
%lfatal(this is a test fatal log send by OPEN_CODE);
%lerror(this is a test error log send by OPEN_CODE);
%lwarn(this is a test warn log send by OPEN_CODE);
%linfo(this is a test info log send by OPEN_CODE);
%ldebug(this is a test debug log send by OPEN_CODE);
%ltrace(this is a test trace log send by OPEN_CODE);
%lbreak(this is a test log break send by OPEN_CODE);
1
%lstart;
2
%lfatal(this is a test fatal log send BY OPEN_CODE);
3
%lerror(this is a test error log send BY OPEN_CODE);
4
%lwarn(this is a test warn log send BY OPEN_CODE);
5
%linfo(this is a test info log send BY OPEN_CODE);
6
%ldebug(this is a test debug log send BY OPEN_CODE);
7
%ltrace(this is a test trace log send BY OPEN_CODE);
8
%lbreak(this is a test log break send BY OPEN_CODE);
3 Bloc de code
Macro
Explication : Définition de trois macros imbriquées (`%a`, `%b`, `%c`). Chaque macro appelle des macros de logging pour illustrer la traçabilité des appels dans les journaux. L'exécution commence par l'appel à la macro `%a`, qui déclenche une chaîne d'appels (`%a` -> `%b` -> `%c`), démontrant comment le contexte d'exécution peut être capturé dans les logs.
Copié !
%macro a;
%b;
%mend;
%macro b;
%lfatal(this is a test fatal log send by B);
%lerror(this is a test error log send by B);
%lwarn(this is a test warn log send by B);
%linfo(this is a test info log send by B);
%ldebug(this is a test debug log send by B);
%ltrace(this is a test trace log send by B);
%lbreak(this is a test log break send by B);
%c;
%mend;
%macro c;
%lfatal(this is a test fatal log send by C);
%lerror(this is a test error log send by C);
%lwarn(this is a test warn log send by C);
%linfo(this is a test info log send by C);
%ldebug(this is a test debug log send by C);
%ltrace(this is a test trace log send by C);
%lbreak(this is a test log break send by C);
%mend;
%a;
1
%macro a;
2
%b;
3
%mend;
4
5
%macro b;
6
%lfatal(this is a test fatal log send BY B);
7
%lerror(this is a test error log send BY B);
8
%lwarn(this is a test warn log send BY B);
9
%linfo(this is a test info log send BY B);
10
%ldebug(this is a test debug log send BY B);
11
%ltrace(this is a test trace log send BY B);
12
%lbreak(this is a test log break send BY B);
13
%c;
14
%mend;
15
16
17
%macro c;
18
%lfatal(this is a test fatal log send BY C);
19
%lerror(this is a test error log send BY C);
20
%lwarn(this is a test warn log send BY C);
21
%linfo(this is a test info log send BY C);
22
%ldebug(this is a test debug log send BY C);
23
%ltrace(this is a test trace log send BY C);
24
%lbreak(this is a test log break send BY C);
25
%mend;
26
%a;
4 Bloc de code
DATA STEP
Explication : Utilisation d'un `data _null_` pour exécuter des routines `call` spécifiques (`call lerror`, `call lwarn`, `call linfo`). Ces routines, qui sont probablement des fonctions personnalisées (via PROC FCMP), permettent d'écrire dans le log SAS configuré à partir d'une étape DATA, offrant une méthode de logging alternative aux macros.
Pour garantir une performance optimale de votre systeme de journalisation, utilisez le parametre ImmediateFlush avec la valeur false dans votre fichier log_config.xml pour les environnements de production a fort volume : cela permet de bufferiser les ecritures sur disque et d eviter des ralentissements systeme lors de l execution intensive de macros ou d etapes DATA, tout en gardant la valeur true uniquement pour les phases de debuggage ou les logs critiques (FATAL/ERROR) afin de ne perdre aucune information en cas de plantage brutal de la session.
Souhaitez-vous qu
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.
Documentation liée
Aucune documentation spécifique pour cette catégorie.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.