C'est toujours bien l'égo boost, surtout quand ça laisse des traces sur l'interweb.
Alex Le 7 février 2017 à 12:53, Yannick Cadin <yann...@diablotin.fr> a écrit : > Bon comme je constate que mon problème n'émeut personne, j'apporte > moi-même la réponse : > > Il y avait 2 soucis combinés (sans rapport direct l'un avec l'autre). > > En premier, c'est posix par défaut jusqu'à la version 3.5 incluse de > syslog-ng, pcre par défaut à partir de la version 3.6. > > Ensuite et surtout, le motif (en premier paramètre de subst) doit > impérativement être délimité par des apostrophes sans quoi les \ ne > serviront qu'à banaliser le caractère qui les suit immédiatement et ne > seront pas interprétés comme faisant partie de symboles PCRE. > > OU ALORS, si l'on veut délimiter le motif avec des guillemets il faut > alors doubler chaque \. > > Exemple concret de ce que je voulais réaliser (et qui désormais > fonctionne) : > > rewrite remove_timestamp_in_docker_events { > subst('(docker/\w+\[\d+]:) \d{4}-\d\d-\d\d \d\d:\d\d:\d\d,\d+', "$1", > value("MESSAGE") type("pcre")); > }; > > > S'il était avéré qu'une expression rationnelle POSIX soit plus rapide à > traiter alors on peut opter pour l'une des variantes ci-dessous : > > subst('(docker/[^[]+\[[0-9]+]:) [0-9]{4}-[0-9]{2}-[0-9]{2} > [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]+', "$1", value("MESSAGE") type("posix")); > > subst('(docker/[[:alnum:]]+\[[0-9]+]:) [0-9]{4}-[0-9]{2}-[0-9]{2} > [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]+', "$1", value("MESSAGE") type("posix")); > > > Merci à moi (on n'est jamais aussi bien servi que par soi-même, surtout en > guise d'auto-congratulations ;) > > Yannick > > > > Le 2017-02-06 22:12, Yannick Cadin a écrit : > >> Bonsoir, >> >> On reste dans le traitement des logs. >> >> J'appelle une commande subst dans un fichier syslog-ng.conf (sur >> Ubuntu 16.10 à jour) >> >> Si le motif recherché est un littéral, ça marche très bien. >> Si le motif recherché est une expression rationnelle au format POSIX, >> ça marche très bien. >> Si le motif recherché contient ne serait-ce qu'un symbole PCRE >> (exemple \d ou \w) alors il N'y a PLUS AUCUNE correspondance trouvée. >> >> Y compris si j'ajoute explicitement type("pcre"). Bien que ce soit >> théoriquement superflu puisque c'est le "moteur" d'expressions >> rationnelles que syslog-ng prétend employer par défaut. >> >> J'ai, par acquis de conscience, lancer une commande ldd sur le binaire >> syslog-ng qui m'a bien confirmé que le programme était lié avec la >> librairie partagée libpcre. >> >> Quasi impossible de trouver le moindre exemple d'emploi d'expressions >> PCRE dans une config syslog-ng (soit je cherche mal, soit personne >> n'emploie les expressions PCRE dans syslog-ng). >> >> Auriez-vous une piste à me suggérer ? (Vous pouvez vous épargner la >> solution consistant à se contenter des expressions POSIX, c'est ce que >> j'adopterai en dernier recours.) >> >> D'avance merci pour votre aide, >> >> Yannick >> >> _______________________________________________ >> Liste de diffusion du FRsAG >> http://www.frsag.org/ >> > _______________________________________________ > Liste de diffusion du FRsAG > http://www.frsag.org/ > -- Alexandre
_______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/