IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macro Discussion :

Macro pour rechercher ERROR ou WARNING dans la log puis dans tous les fichiers d'un répertoire


Sujet :

Macro

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    programmeur SAS
    Inscrit en
    Août 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : programmeur SAS

    Informations forums :
    Inscription : Août 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Macro pour rechercher ERROR ou WARNING dans la log puis dans tous les fichiers d'un répertoire
    Bonjour à tous,

    Dans mes programmes, je créé des logs grâce à une proc printto et recherche ensuite manuellement ERROR et WARNING

    J'aimerais savoir s'il est possible de parcourir l'ensemble des fichiers .log pour y repérer si le mot "error" est écrit.

    Il me serait bien pratique de pouvoir le faire de manière automatique : parcourir chaque fichier .log, rechercher si le mot "error" apparaît, stocker cette info dans une macro-variable... et ensuite de le faire sur tous les fichiers d'un répertoire...


    Si quelqu'un a une idée ou une autre astuce, je suis preneuse !


    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    plutot que d'avoir a faire cela il faut quand on lance un traitement regarder son code retour.

    Sur Unix : $?
    Sur Windows : %ERRORLEVEL%

    si le code est différent de zéro alors pb!

  3. #3
    Membre éprouvé
    Avatar de Stackware
    Homme Profil pro
    ArchiDuc de la Sasserie
    Inscrit en
    Juillet 2013
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ArchiDuc de la Sasserie
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 439
    Points : 1 017
    Points
    1 017
    Billets dans le blog
    4
    Par défaut
    +1 avec cette méthode.
    J'ai déjà eu fait ça, avec un script qui lance les programmes, qui récupère les codes retour, qui scanne les logs en cas d'erreur ou de warning, puis qui compile ça dans un fichier de log global.
    Je l'ai écrit en Perl, parce que c'est très rapide pour scanner et récupérer les lignes qui nous intéressent, et que le même code est utilisable sous Windows,Unix ou Linux.

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    programmeur SAS
    Inscrit en
    Août 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : programmeur SAS

    Informations forums :
    Inscription : Août 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    j'ai oublié de préciser que je travaille sous SAS...

  5. #5
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    Dans SAS on peut utiliser les expressions régulières sans problème.

    Il faudrait écrire une macro qui scanne les fichiers texte (quelle que soit l'extension, .log dans ton cas) à la recherche d'une expression (ERROR: dans ton cas mais ça peut être autre chose.).

    Tu mets en paramètre le chemin vers tes fichiers, l'extension, le mot à rechercher.
    Tu pourras utiliser les fonctions PRXPARSE et PRXMATCH.

    Je ne te cache pas que c'est horrible à coder.

    Mais peut être que stackware a ré écrit son programme en macro SAS.

  6. #6
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Hello,

    sans code macro on peut récupérer les lignes où l'erreur oule WARNING est survenu, avec une simple étape data, voici un exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
    data errors;
    length MSG $300.;
    infile "~/log.txt" lrecl=700;
    input;
    MSG=_infile_;
    if find (MSG,'ERROR')>0 or find (MSG,'WARNING')>0 then output;
    run;
    - après tu peux automatiser le processus sur tous les fichiers du répertoire, fais une recherche dans le forum je pense avoir répondu à cette problématique ( comment importer plusieurs fichiers )
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  7. #7
    Membre éprouvé
    Avatar de Stackware
    Homme Profil pro
    ArchiDuc de la Sasserie
    Inscrit en
    Juillet 2013
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ArchiDuc de la Sasserie
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 439
    Points : 1 017
    Points
    1 017
    Billets dans le blog
    4
    Par défaut
    Malheureusement non, très chère Carole, je n'ai pas traduit ça en macros SAS. En fait ça n'avait aucun intérêt, puisque ça fonctionnait bien, et que les programmes, il faut bien les lancer. Quand on les lance, c'est sous Windows au travers d'un fichier .bat ou .cmd (ou .vbs), et sous Unix/Linux sous la forme d'un shell.
    Dans la mesure où on doit faire cela (à moins de les lancer exclusivement à partir d'une session en interactif), et bien le programme externe est bien indiqué, vu que le langage SAS est certes génial, mais pas vraiment adapté pour ça.
    S l'on travaille en interactif, il y a la possibilité d'utiliser Notepad++, qui sait chercher des mots clés dans un répertoire complet, et afficher dans une seule fenêtre tous les résultats. Il suffira de double-cliquer sur la ligne de résultat qui nous intéresse pour ouvrir directement dans la fenêtre d'édition le fichier en question, à la bonne ligne...

  8. #8
    Membre éclairé
    Homme Profil pro
    responsable adjoint service stat
    Inscrit en
    Mars 2009
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : responsable adjoint service stat
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    Méthode alternative

    J'ai changé mon bouton "F4" pour lancer les programmes :
    J'ai remplacé la commance sub par la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clear log;sub;log;zoom on;bottom;find WARNING first;find ERROR first
    Quand j'appuie sur F4
    - la log est nettoyée
    - le programme est soumis
    - SAS se positionne sur la log et l'agrandit
    - Si il y a un mot ERROR dans la log, il se positionne sur le PREMIER,
    - Sinon, sil y a un mot WARNING dans la log, il se positionne sur le PREMIER,
    - Sinon il reste en bas
    ==> De cette façon tu ne loupes jamais aucun WARNING ou ERROR

    Bonus : Je définis mon bouton F4 dans mon AUTOEXEC via la commance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DM 'keydef "F4"      "clear log;sub;log;zoom on;bottom;find WARNING first;find ERROR first"'           ;

  9. #9
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    vous parlez de ces vieux trucs ?

    http://support.sas.com/kb/34/301.html

    http://www.lexjansen.com/wuss/2004/c..._detection.pdf

    j'en ai d'autres si vous voulez
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    programmeur SAS
    Inscrit en
    Août 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : programmeur SAS

    Informations forums :
    Inscription : Août 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour vos réponses : je suis parvenu à lire toutes les log d'un répertoire, à rechercher des mots particuliers et à en faire un doc récapitulatif

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/05/2018, 17h07
  2. Application de recherche de texte dans tous les fichiers d'un répertoire
    Par altair8080 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 25/03/2014, 07h59
  3. Réponses: 3
    Dernier message: 04/05/2009, 08h28
  4. Réponses: 2
    Dernier message: 01/11/2007, 11h07
  5. Lister dans un tableau tous les fichiers d'un répertoire ?
    Par The Molo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2007, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo