Мне нужно отформатировать имя файлов, которые создает rsyslog:
Прямо сейчас в /etc/rsyslog.d/51-loggingdriver.conf у меня есть:
$template DockerLogs,"/var/log/docker/%HOSTNAME%_%FROMHOST-IP%_%PROGRAMMENAME%_syslog.log"
Но похоже, что имя программы дает мне что-то вроде:
gitlab_gitlab.1.2rr19xz43unto19ba1sih7jqg_syslog.log
gitlab_gitlab.1.aw2xvfp77i68i2c87szy5n8g9_syslog.log
gitlab_gitlab.1.ig5hk4j3i5x8i6hi07ebqotln_syslog.log
поэтому он дает мне несколько файлов для одного и того же приложения, но мне нужен только один файл. (случайный суффикс связан с использованием Docker Swarm Services)
Я бы хотел, чтобы это поле было равно: gitlab_gitlab
, или даже лучше, просто gitlab
Возможно ли это? Как мне это сделать ? Есть ли способ сделать подстроку ???
Вы можете многое сделать с заменитель собственности, включая получение подстроки фиксированного размера или более точное соответствие регулярному выражению. Например,
%programmename:R,ERE,1,FIELD:([^_.]+).*--end%
вместо того %PROGRAMMENAME%
в вашем шаблоне остановится после первого _
или .
персонаж. В R
означает использование регулярного выражения с расширенным синтаксисом ERE
, сохраните первую группу захвата 1, и если совпадений нет, используйте исходное значение FIELD. В шаблоне регулярного выражения есть группа захвата ()
который соответствует любым символам, кроме двух упомянутых выше [^_.]+
. В --end
показывает конец R
синтаксис.