[R] Recherche dans un fichier LOG

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
richie6700
Niveau 4
Niveau 4
Messages : 57
Enregistré le : ven. 21 janv. 2011 16:22
Status : Hors ligne

[R] Recherche dans un fichier LOG

#1

Message par richie6700 »

Bonjour à vous,

J'ai un petit problème que j'aurais aimé résoudre grâce à votre aide :D. En fait, je souhaiterai faire une recherche dans plusieurs fichier log. Rechercher s'il y a le mot "error" et ensuite envoyé un mail.

Le script serait du style comme sa :

Si dans Xfichier il y a Xerror alors envoyé UN mail.

Comment puis je faire??

merci à vous.

PS : pour la fonction mail ne vous cassez pas la tête j'ai ma solution. J'aurai juste aimé faire la recherche
Modifié en dernier par richie6700 le lun. 18 avr. 2011 16:57, modifié 3 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [...] recherche dans un fichier log

#2

Message par sylvanie »

Dans les grande lignes que pensez vous de l'idée suivante :

- Recherche des fichiers log via FileFindFirstFile et FileFindNextFile
- Lecture de ces derniers
- Détection de error via Stringinstr ou stringregexp

par contre après que voulez vous mettre dans ce mail :
- les noms des fichiers ?
- les lignes où error apparaît
- autres ?
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Recherche dans un fichier LOG

#3

Message par zeshrek »

tu n'as qu'a remplacé la vonction avec la msgbox par celle qui envoie le mail.
► Afficher le texte
edit : code modifié, j'avais pas vu qu'il s'agissait de plusieurs ficheirs. là je t'ai fait un exemple ou tu as 6 fichiers 'en dur' mais rien ne t'empeche d'utiliser une fonction de recherche automatique pour générer le tableau $logfile.

Re-Edit : Bon, finalement j'ai fait aussi la recherche auto des ficheirs de log, tu as juste a mettre le chemin dans $logpath
Si vis pacem para bellum
richie6700
Niveau 4
Niveau 4
Messages : 57
Enregistré le : ven. 21 janv. 2011 16:22
Status : Hors ligne

Re: [..] Recherche dans un fichier LOG

#4

Message par richie6700 »

Ouaouaou merci ton script marche parfaitement.

Par contre serait il possible de m'expliquer certaine chose? Je ne comprend pas :

Dim $cptr[$logfile[0]+1]
$cptr[$j] = $cptr[$j] + 1
$cptr[$i]

Que fait ces trois choses??

Merci
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Recherche dans un fichier LOG

#5

Message par zeshrek »

Bah oui il marche mon script, je l'ai testé avant de le poster ;)

Bon, alors tes questions :
- Pourquoi Dim $cptr[$logfile[0]+1] ?
bin, si tu comprend le script, c'est logique.
$Logfile[0] contient le nombre de fichiers .log trouvés. Le pb, c'est que comme les fichiers sont a partir de 1 et non de 0 comme on fait traditionellement les tableaux il faut initialiser $cptr a 1 de plus (ou alors il faudrait que je la ligne 13 termine par $cptr[$j-1] = $cptr[$j-1] + 1
c'est plus simple de dimensionner le tableau a 1 de plus, et de ne pas utiliser $cptr[0]

- Pourquoi $cptr[$j] = $cptr[$j] + 1 ?
pour chaque fichier je compte le nombre de fois ou il y a le nombre de 'error' dans le log, et je stocke ce nombre dans ce tableau. ca permet a ma msgbod de te dire pour chaque fichier combien il y a de 'error'

pourquoi $cptr[$i]
bin justement pour compter le nombre d'erreurs. comme il est a zero lors du dimensionnement du tableau au début (ligne 7) si il est a autre chose (le if de la ligne 18) c'est là que le message est composé (nom du fichier concerné et nombre d'erreurs)


Au final un script assez simple non ?
Si vis pacem para bellum
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Recherche dans un fichier LOG

#6

Message par DimVar »

Ce post va finir en cours Autoit 8)

Bjr zeshrek,

J'ai moi aussi une question que je me pose depuis longtemps.
Quel est l'interet de differencier la declaration des variables avec Dim ou Global ?

Merci.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Recherche dans un fichier LOG

#7

Message par Jerome »

Coucou,


C'est vraiment un cours alors :)

Pour la définition des variables, je conseil d'aller faire un tour ici.



Jérôme
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Recherche dans un fichier LOG

#8

Message par jchd »

Global déclare une variable de portée ... globale, visible depuis sa déclaration indépendemment du contexte.

Dim déclare une variable ayant la portée du contexte où elle se trouve : fonction ou globale. Permet aussi de redéclarer une variable globale existant antérieurement.

Local déclare une variable limitée au contexte où elle se trouve.

Static (expérimental) déclare une variable statique, locale à une fonction mais ne recevant qu'une fois son initialisation et conservant la dernière valeur assignée après sortie de la fonction. Static n'est pas encore une fonctionnalité stable et n'est pas encore exempte de problèmes dans sa version actuelle. N'employer en production qu'en comprenant bien les soucis potentiels (voir Trac sur forum US).

On peut avoir besoin de préciser Const pour une constante ou Enum pour une énumération (possibilité malheureusement pas assez uilisée).

Tout cela se trouve dans l'aide.

EDIT: contrairement au post indiqué par Jérôme, AutoIt ne connaît pas la notion d'unité de code (include). Qu'une déclaration soit dans le code du fichier "principal" ou dans un include n'a strictement aucune incidence sur quoi que ce soit, en particulier aucune incidence sur la portée des variables. C'est une erreur d'interprétation trop courante (probablement due à l'influence de C et consort).
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Recherche dans un fichier LOG

#9

Message par zeshrek »

En complément au cours magistral de mes prédécesseurs, j'ajouterai ceci :
J'ai personnellement l'habitude de faire ainsi :
- Global ou Local selon que je les exploite dans tout le script ou juste dans une fonction.
- Global Const ou Local Const pour les constantes, cad 'variables' dont la valeur ne change pas pendant l'execution du programme comme $NomAppli="toto", $Version="1.0" ou $Pi=3.14
(je n'utilise pas static, dont j'ignorais jusqu'a l'existance).
- Dim pour les tableaux, c'est un vieil héritage du Basic ou les tableaux devaient etre déclarés.

Comme j'utilise la déclaration obligatoire dans mes scripts, je trouve pratique de savoir dès la ligne de déclaration si je me trouve avec une variable une constante ou un tableau, de portée locale ou globale.
Ca optimise peut etre pas le code ou le fonctionnement du script mais ca gagne pas mal en lisibilité...
Si vis pacem para bellum
richie6700
Niveau 4
Niveau 4
Messages : 57
Enregistré le : ven. 21 janv. 2011 16:22
Status : Hors ligne

Re: [..] Recherche dans un fichier LOG

#10

Message par richie6700 »

Rebonjour,

Merci pour vos réponse, c'est cool.

Je met en résolu

@ plus
Répondre