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 :
en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 foreach $record ( reverse(<FILER1>) ) { 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, ... ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 foreach $record ( reverse(<FILER1>) ) { next if $record =~ /^Payload:/; chomp($record); if ( ($record =~ /.*${patternWarning}.*/i)
Merci pour vos lumières.
ps : un exemple de ligne est fourni dans le fichier joint
Partager