Important Extraction chaine de caractères d'un fichier log

Plus d'informations
il y a 13 ans 9 mois #12525 par boutou


Bonjour à tous et merci à ce forum d'exister :-)

Je suis un petit nouveau dans PS et j'aurai besoin de vos lumières.

Je souhaite extraire une partie de chaine de caractère d'un .log (defini deja dans une varaible qui a filtrer certains logs) commençant par \":\" et ensuite pouvoir faire un tri la-dessus ainsi qu'un count. J'ai essayé de faire un split mais celui-ci ne fonctionne pas.

Donc pour résumer :
J'ai filtrer des logs (en erreur) et la dessus je veux filtrer pour garder seulement la fin du log à partir du caractère \":\" puis faire un tri selon mots clés et un count.

Voilà j'ai tout dis, j'espère trouver de l'aide.

Merci à tous.
:)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #12527 par xyz
Salut,
boutou écrit:

Voilà j'ai tout dis

Presque.
boutou écrit:

j'espère trouver de l'aide.

Déjà aide nous à t'aider en nous donnant ne serait-ce qu'un exemple d'une ligne à garder et un autre d'une ligne à ne pas garder.
Là tu vas trouver de l'aide :)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #12529 par boutou
Bonjour Laurent,

Donc en fait je me connecte sur un serveur pour recupérer les logs d'un soft (le path est defini en variable)

Ensuite sur ce fichier de log, je filtre lignes qui sont du type 2012-07-09 .....
Ceux qui sont en error sont definis ainsi : 2012-07-09 ..... error1 error2 .....error3:\"type d'erreur \"(jamais + que 3)
Je ne suis plus au travail donc je ne peux pas te donner exactement les messages mais la syntaxe est ainsi.

donc j'arrive a récupérer toutes les lignes d'erreur ($error) mais après je veux filtrer sur error3: avec un count et un filtre par type d'erreur (par mot clé)en mettant un délimiteur sur le \":\"

J'espère avoir été clair, c'est pas évident sans avoir de logs sous les yeux.

Merci pour ton aide en tous cas

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #12531 par xyz
boutou écrit:

Merci pour ton aide en tous cas

Pour l'instant je n'ai encore rien fait :laugh:
Communiques-nous un exemple extrait de fichier de log.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #12532 par boutou
Salut Laurent, ça tombre bien je suis au travail...
Voilà un extrait d'une ligne de log à récupérer:
2012-07-06 18:53:07,289 [35] ERROR Error processing message #56635366: TVS.Mupe.MapiException: MAPI error: 0x8004011B (cela sur la même ligne)

Par contre j'ai d'autres lignes en error que je veux extraire mais sont du type :
2012-07-06 18:53:07,289 [35] ERROR Error processing message #56635366:
TVS.Mupe.MapiException: MAPI error: 0x8004011B (sur une seconde ligne cette fois-ci)

Donc je souhaiterais extraire dans un nouveau fichier ce qui apparait après #56635366 dans les 2 cas (que ce soit sur la même ligne ou non)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #12541 par xyz
Une ébauche, car je crains que ma regex soit 'tombé en marche' :
[code:1]
@\"
2012-07-06 18:53:07,289 [35] ERROR Error processing message #56635366: TVS.Mupe.MapiException: MAPI error: 0x8004011A
2012-07-06 18:53:07,289 [35] Success
2012-07-06 18:53:07,289 [35] ERROR Error processing message #56635366:
TVS.Mupe.MapiException: MAPI error: 0x8004011B
2012-07-06 18:53:07,289 [35] Success
#commentaire
2012-07-06 18:53:07,289 [35] ERROR Error processing message #56635366: TVS.Mupe.MapiException: MAPI error: 0x8004011C


2012-07-06 18:53:07,289 [35] ERROR Error processing message #56635366:
TVS.Mupe.MapiException: MAPI error: 0x8004011D

Not matches
Erreur : 0x8004011B
2012-07-06 18:53:07,289 [35] ERROR Error processing message #56635366:
fin
\"@ > c:\temp\log.txt

$T=[io.file]::ReadAllText('c:\temp\log.txt')
$regex=[regex]$regex='(?im-s)^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} \[\d{1,}] ERROR Error processing message #\d{1,}:\s+(?<ErrorText>(.*?)0x.*)$'
$m = $regex.match($T)

$Resultat=while ($m.Success) {
$m.Groups.Value
$m = $m.NextMatch()
}
$Resultat

#TVS.Mupe.MapiException: MAPI error: 0x8004011A
#TVS.Mupe.MapiException: MAPI error: 0x8004011B
#TVS.Mupe.MapiException: MAPI error: 0x8004011C
#TVS.Mupe.MapiException: MAPI error: 0x8004011D
[/code:1]
La difficulté est sur la recherche multiline, qui n'est pas mon fort.
A tester, à tester et à retester :P<br><br>Message édité par: Laurent Dardenne, à: 14/08/12 15:46

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.042 secondes
Propulsé par Kunena