1 pièce(s) jointe(s)
[REGEX] Blocage suite parsing ligne de grande taille
Bonjour,
je dois lire un fichier de log JBoss pour rechercher le motif suivant :'Deployed "edit-gateway.war"'.
Tout se passe bien en général, sauf quand ce fichier de log contient des lignes de très grande taille : cela arrive quand le service est redémarré suite à un problème en journée. Un exemple de ce type de ligne est fourni en pièce jointe, longueur 56906 caractères, incluant notamment le caractère +, quantificateur d'expressions régulières, le séparateur /...
La recherche du motif se passe bien lorsqu'il n'y a pas ces énormes lignes, commençant toutes par 'Payload'.
Si présentes, le programme semble se figer et ne rend plus la main, bloquant toutes les autres traitements à suivre. Le dernier blocage a été constaté au matin à 8 heures, le programme de recherche de motif ayant démarré la veille à 18h30.
Pour que cela fonctionne et que le programme ne se bloque plus, j'ai modifié le code suivant :
Code:
1 2 3
| foreach $record ( reverse(<FILER1>) ) {
chomp($record);
if ( ($record =~ /.*${patternWarning}.*/i) |
en
Code:
1 2 3 4
| foreach $record ( reverse(<FILER1>) ) {
next if $record =~ /^Payload:/;
chomp($record);
if ( ($record =~ /.*${patternWarning}.*/i) |
Ce contournement a réglé notre problème, car le motif recherché n'est pas dans ce lignes du type 'Payload', mais pour ma culture personnelle, est-ce que j'utilise mal l'expression régulière, est-ce une limitation du moteur d'expressionsrégulières, ... ?
Merci pour vos lumières.
ps : un exemple de ligne est fourni dans le fichier joint